【问题标题】:Preprocessor directive return value预处理器指令返回值
【发布时间】:2012-10-19 09:27:15
【问题描述】:

我想接收变量check的输出值
这是用#define check something 定义的 是否可以使用某些预处理器指令接收此值?
例如这样的:
#error check

【问题讨论】:

  • 什么?你想达到什么目标?
  • @Naveen 我已经定义了一些检查(#define 检查一些东西),其中包含一些我实际上不知道的值,我现在想检查检查变量中的值。

标签: linux c-preprocessor preprocessor-directive


【解决方案1】:

#error 指令未进行宏扩展。 #warning也不是。

这意味着您不能使用#error#warning 输出预处理器表达式

根据预处理器表达式的值给出消息的最接近方法是:

#if (MACRO < 12)
#error MACRO was less than 12
#elif (MACRO >15 && MACRO < 19)
#error Another message about MACRO
#endif

有关更多信息,请参阅文档中的“条件”:

【讨论】:

    【解决方案2】:

    没有。

    变量在编译时没有值,只有在运行时。预处理器不在运行时运行,仅在编译时运行。

    此外,预处理器不解析语言,它只处理文本。它不知道你的变量声明。

    【讨论】:

      【解决方案3】:

      如果您必须获取它的值,请尝试仅预处理存在潜在错误的文件。

       for gcc: gcc -E
      

      然后您可以手动检查它的扩展内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多