如何在头文件中展开或折叠定义,例如
#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))
答案 0 :(得分:2)
标题中的定义""没有"扩展",你期望发生什么?
相反,它们使用的位置将被预处理以插入定义。
您通常预处理C文件,而不是标题,即在未定义的情况下使用#define
的文件。
答案 1 :(得分:1)
GCC(实际上是预处理器)会忽略您的定义,因为它们未被使用。尝试附加int x = SIO_ASSOCIATE_HANDLE;
并重新运行gcc。