例如,我将这样的表达式传递给macro CHECK()
:
CHECK((var1 + var2) * 4 <= var3))
其中:var1, var2, var3
是任何变量(指针,变量,数组,数字,类......)
我想将var1, var2, var3
替换为其值,并将其打印出来:
(15 + 16) * 4 <= 20
是否可以使用C
/ C++
?我还没想到。
从(var1 + var2) * 4 <= var3)
打印macro CHECK()
非常简单,只需使用#
运营商即可
但是用符号替换符号并打印出来作为表达似乎很不舒服。
答案 0 :(得分:0)
如果您需要评估和打印预定义宏的参数,我怀疑有一个简单的解决方案。如果您只需要创建和打印带有评估参数的表达式,可以使用#
运算符完成:
#include <stdio.h>
#define PRINT_CHECK(var1, type1, var2, type2, var3, type3) \
printf("(%"#type1" + %"#type2") * 4 <= %"#type3"\n", var1, var2, var3)
void main(void) {
PRINT_CHECK(0, d, 1 + 2, d, 3 * 4, d);
}
结果
$ gcc example.c -o example && ./example
(0 + 3) * 4 <= 12