用表达式中的值替换符号并打印出表达式

时间:2014-12-01 04:13:09

标签: c++ c

例如,我将这样的表达式传递给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()非常简单,只需使用#运营商即可 但是用符号替换符号并打印出来作为表达似乎很不舒服。

1 个答案:

答案 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