Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用表达式中的值替换符号并打印表达式_C++_C - Fatal编程技术网

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”)*4
CHECK()的实际定义是什么在任何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