这是我正在尝试做的事情。
step1)我想用条件语句(简单的复合)调用宏
例如:
MACRO1(a==1)
MACRO1((i!=NULL) && (j>10))
step2) 下面是我如何定义这个宏
#define MACRO1(condition) \
if(!(condition)) ??????????????????????????
这里在宏的定义中,如果条件语句失败。我想打印变量值,以便了解确切原因。 我在定义中使用了#condition,但它只是打印条件,而不是条件中使用的变量的值。请帮忙。
最佳答案
你可以按照这些思路做一些事情:
#define MACRO1(condition, msg) \
if(!(condition)) { printf msg; }
并按如下方式使用它:
MACRO1(a==1, ("a: %d\n", a))
MACRO1((i != NULL) && (j>10), ("i: %p, j: %d\n", i, j));
C预处理器只是一个简单的替换引擎,没有分析表达式内容的能力。
关于c - 在#define 定义中获取变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19675283/