将符号替换为表达式中的值并打印表达式输出

Replace symbols with values in expression and print expression out

本文关键字:表达式 打印 输出 符号 替换      更新时间:2023-10-16

例如,我有一个这样的表达式传递给macro CHECK()

CHECK((var1 + var2) * 4 <= var3))

其中:var1, var2, var3是任何变量(指针、变量、数组、数字、类...

我想用它们的值替换var1, var2, var3并像这样打印出来:

(15 + 16) * 4 <= 20

C/C++可以吗?我还没想到。
macro CHECK()打印(var1 + var2) * 4 <= var3)非常简单,只需使用#操作员即可。
但是用值替换符号并打印出来作为一种表达似乎并不容易。

如果您需要评估和打印预定义宏的参数,我怀疑有一个简单的解决方案。如果您只需要创建和打印带有计算参数的表达式,则可以使用这样的运算符#完成:

#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