我在编译期间传递了一个macto:
% gcc -DIDENT="abcd" app.c
在编译宏期间检查的正确方法是什么?例如,以下工作,但抛出警告:
#ifdef IDENT == "abcd"
printf("abcd\n");
#endif
警告:#ifdef指令末尾的额外令牌。
答案 0 :(得分:4)
#ifdef测试是否定义了符号,而不是值是什么,因此仅作为
有效{{1}}
#if表达式将测试表达式是否为true,但仅限于整数。
有关更多信息,请参阅gcc预处理器手册:
答案 1 :(得分:3)
#ifdef
只是符号的定义与否。这不是它的价值,而是它的定义/存在。
#define IDENT
#ifdef IDENT {yields true}
Vs以上。
//#define IDENT {not defined}
#ifdef IDENT {yields false because line above is commented out