其他分享
首页 > 其他分享> > 在C中取消定义一个typedef?

在C中取消定义一个typedef?

作者:互联网

我正在开发一个庞大的项目,它有一个文件A.h,其代码有一行

typedef unsigned __int16   Elf64_Half;

此外,由于我在Linux上构建并使用dlinfo函数,我必须在我的项目中包含link.h文件.这就是它产生冲突的地方,因为我有两个具有相同名称Elf64_Half的typedef. (Linux link.h包括elftypes.h,它也有:typedef unsigned short Elf64_Half;).

在这种情况下我该怎么办?我有唯一的选择,在a.h中更改我的typedef?请记住,这不是太容易,因为项目很大,我将不得不在几个地方做出改变.

有没有办法解开typedef或什么?

解决方法:

为了澄清,Rahul Manne给出了一个简单的解决方案.做

#define Elf64_Half The_Elf64_Half_I_dont_care
#include<link.h>
#undef Elf64_Half
#include<A.h>

/*
 * Code here and use Elf64_Half from A.h as you like.
 * However, you can't use Elf64_Half from link.h here
 * or you have to call it The_Elf64_Half_I_dont_care.
 *
 */

这将使用The_Elf64_Half_I_dont_care替换link.h中的每个Elf64_Half,因此您不会与A.h.冲突.只要你不想明确地使用link.h的Elf64_Half就行没问题.您只需要记住,来自link.h的Elf64_Half现在称为The_Elf64_Half_I_dont_care,以防您必须在此文件中明确使用它.

标签:c,linux,header-files,typedef
来源: https://codeday.me/bug/20191005/1855494.html