我想用C语言编写代码:
if(defined(MACRO)) ... else ...
但我无法在C中找到任何方法,因为定义的(MACRO)预处理器操作符仅在#if内部工作.有没有办法做到这一点?
我真正想做的是写:
ASSERT(UART, var >= 0);
哪里
#define ASSERT(NAME, TEST) \
do { \
if (defined(NAME) && !(TEST)) \
printf("Assert failed"); \
} while(0)
因此,我可以在定义宏时启用ASSERT检查,如果未定义宏,则不应检查断言.如果您尝试这样做,那么您会得到:
implicit declaration of function `defined'
这是很容易理解的,因为GCC编译器找不到defined()预处理器运算符.