C预处理器: expand macro in a #warning

标签 c gcc c-preprocessor

我想在#warning 指令中打印一个宏值(扩展宏)。

例如,对于代码:

#define AAA 17
#warning AAA = ???

所需的编译时输出将是

warning: AAA = 17

我的用途是什么???,或者,我如何扩充代码?

最佳答案

您可以使用预处理器指令#pragma message

例子:

#define STR_HELPER(x) #x
#define STR(x) STR_HELPER(x)

#define AAA 123
#pragma message "content of AAA: " STR(AAA)

int main() { return 0; }

输出可能是这样的:

$ gcc test.c
test.c:5:9: note: #pragma message: content of AAA: 123
 #pragma message("content of AAA: " STR(AAA))
         ^

供引用:

关于C预处理器: expand macro in a #warning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12637392/

相关文章:

使用 fork() 创建进程的递归树

c - 我想以矩阵形式输入整数二维数组。获取以空格分隔的第一行元素,依此类推

c++ - 无法使用 libboost_thread 构建应用程序

c - C 中类似函数的宏定义

C++ 错误 : cannot convert ‘char (*)[63]’ to ‘char*’ in initialization

c - 函数参数列表中数组声明中的限定符是 C17 中的可选功能还是强制功能

c - 如何解析DW_OP_call_frame_cfa?

gcc - 使用 GCC 进行循环版本控制

c++ - 了解DEFER和OBSTRUCT宏

c - 在不使用 # 字符的情况下使用预处理器指令