据我所知,#ifdef
只能检查是否定义了宏,而不是宏的定义。
#define MY_NUMBER 1
.
.
.
#ifdef MY_NUMBER
function();
#endif
我尝试过这样的事情:
#define MY_NUMBER 1
.
.
.
#ifdef MY_NUMBER 1
function();
#endif
并且编译器发出以下内容:
warning: extra tokens at end of #ifdef directive
并且不考虑宏的值(它只是被忽略)。
如何检查宏是否具有特定值?
答案 0 :(得分:3)
就像在条件语句中一样,您可以在预处理器中使用相等(==
)或不等(<
/ >
/ <=
/ >=
)指令:
#if MY_NUMBER == 1
function1();
#elif MY_NUMBER == 2
function2();
#else
function3();
#endif