在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