用GCC展开定义

Expand defines with GCC

本文关键字:定义 GCC      更新时间:2023-10-16

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

#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))

定义"in The header"没有"展开",你认为会发生什么?

相反,使用的地方将被预处理以插入定义。

你通常预处理一个C文件,而不是头文件,也就是说,在没有定义的情况下使用#define

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