C++ 用表达式中的值替换符号并打印表达式
例如,我将这样一个表达式传递到C++ 用表达式中的值替换符号并打印表达式,c++,c,C++,C,例如,我将这样一个表达式传递到宏检查(): 是否可以使用C/C++?我还不知道。 打印(var1+var2)*4如果需要计算和打印预定义宏的参数,我怀疑是否有简单的解决方案。如果您只需要创建和打印带有已计算参数的表达式,可以使用#运算符完成,如下所示: #include <stdio.h> #define PRINT_CHECK(var1, type1, var2, type2, var3, type3) \ printf("(%"#type1" + %"#type2") * 4
宏检查()
:
是否可以使用C
/C++
?我还不知道。打印
(var1+var2)*4如果需要计算和打印预定义宏的参数,我怀疑是否有简单的解决方案。如果您只需要创建和打印带有已计算参数的表达式,可以使用#
运算符完成,如下所示:
#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);
}
#包括
#定义打印检查(var1,type1,var2,type2,var3,type3)\
printf(((“#type1”+%“#type2”)*4CHECK()的实际定义是什么在任何C/C++代码编译之前,宏扩展都是作为一个简单的文本替换完成的,当然在运行时也不适用。如果你想在C++中有一些有用的东西,请选择模板。Upvter解释这个问题。这是一个有效的问题?C?= C++,C++中的宏很少是要走的。>什么是实际的检查()定义???-->这实际上是我在问forThanks。但我想把一个通用表达式传递到那个宏中。也许我们需要一个表达式解析器?如果你找到了什么,它可以是解决方案。不过,一般来说,即时计算器不是一件简单的事情。
(15 + 16) * 4 <= 20
#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