使用GCC展开定义

时间:2015-05-20 12:04:52

标签: c++ c gcc g++

如何在头文件中展开或折叠定义,例如

#define IOC_IN 0x80000000
#define IOC_WS2 0x08000000
#define _WSAIOW(x,y)(IOC_IN|(x)|(y))
#define SIO_ASSOCIATE_HANDLE _WSAIOW(IOC_WS2,1)

我尝试了gcc -E file.h > output.h然而这会输出一个空文件。我正在使用MingW编译器。

我希望这些定义可以这样取代:

#define IOC_IN 0x80000000
#define IOC_WS2 0x08000000
#define _WSAIOW(x,y)(IOC_IN|(x)|(y))
#define SIO_ASSOCIATE_HANDLE (IOC_IN|(IOC_WS2)|(1))

2 个答案:

答案 0 :(得分:2)

标题中的定义""没有"扩展",你期望发生什么?

相反,它们使用的位置将被预处理以插入定义。

您通常预处理C文件,而不是标题,即在未定义的情况下使用#define的文件。

答案 1 :(得分:1)

GCC(实际上是预处理器)会忽略您的定义,因为它们未被使用。尝试附加int x = SIO_ASSOCIATE_HANDLE;并重新运行gcc。