比较 ifdef 指令中的字符串
compare strings in ifdef directive
编译时传了一个macto:
% gcc -DIDENT="abcd" app.c
在编译宏时检查宏的正确方法是什么?例如以下工作,但抛出警告:
#ifdef IDENT == "abcd"
printf("abcd\n");
#endif
警告:#ifdef 指令末尾有额外标记。
#ifdef
在典型使用中只是关于符号是否已定义。不在于它的价值,在于它是否defined/exists.
#define IDENT
#ifdef IDENT {yields true}
比
//#define IDENT {not defined}
#ifdef IDENT {yields false because line above is commented out
#ifdef 测试一个符号是否被定义,而不是值是什么,所以只在
时有效
#ifdef SYMBOL
#if 表达式将测试表达式是否为真,但仅限于整数。
有关详细信息,请参阅 gcc 预处理器手册:
编译时传了一个macto:
% gcc -DIDENT="abcd" app.c
在编译宏时检查宏的正确方法是什么?例如以下工作,但抛出警告:
#ifdef IDENT == "abcd"
printf("abcd\n");
#endif
警告:#ifdef 指令末尾有额外标记。
#ifdef
在典型使用中只是关于符号是否已定义。不在于它的价值,在于它是否defined/exists.
#define IDENT
#ifdef IDENT {yields true}
比
//#define IDENT {not defined}
#ifdef IDENT {yields false because line above is commented out
#ifdef 测试一个符号是否被定义,而不是值是什么,所以只在
时有效#ifdef SYMBOL
#if 表达式将测试表达式是否为真,但仅限于整数。
有关详细信息,请参阅 gcc 预处理器手册: