【问题标题】:Expand defines with GCC使用 GCC 扩展定义
【发布时间】:2015-05-20 12:04:52
【问题描述】:

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

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

【问题讨论】:

  • 用预期的输出更新问题。
  • 叹息。实际输出。我问这个是因为您的文字描述含糊不清。

标签: c++ c gcc g++


【解决方案1】:

“在标题中”的定义没有“扩展”,你期望会发生什么?

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      • 2013-09-26
      • 1970-01-01
      • 2015-02-01
      相关资源
      最近更新 更多