小编Mik*_*oti的帖子

在C if语句中使用定义的(MACRO)

我想用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()预处理器运算符.

gcc c-preprocessor

11
推荐指数
3
解决办法
4014
查看次数

标签 统计

c-preprocessor ×1

gcc ×1