比较 ifdef 指令中的字符串

Mar*_*ark -2 c macros conditional-compilation

我在编译过程中传递了一个 macto:

% gcc -DIDENT="abcd" app.c

在编译宏期间检查的正确方法是什么?例如下面的工作,但抛出警告:

#ifdef IDENT == "abcd"
printf("abcd\n");
#endif
Run Code Online (Sandbox Code Playgroud)

警告:#ifdef 指令末尾的额外标记。

los*_*ard 5

#ifdef 测试是否定义了符号,而不是值是什么,因此仅在以下情况下有效

#ifdef SYMBOL
Run Code Online (Sandbox Code Playgroud)

#if 表达式将测试表达式是否为真,但仅限于整数。

有关更多信息,请参阅 gcc 预处理器手册:

https://gcc.gnu.org/onlinedocs/cpp/If.html

https://gcc.gnu.org/onlinedocs/cpp/Ifdef.html#Ifdef