将符号替换为表达式中的值并打印表达式输出
Replace symbols with values in expression and print expression out
例如,我有一个这样的表达式传递给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
相关文章:
- 如何循环打印顶点结构
- 为什么在popback()操作之后,它仍然打印完整的矢量
- (C++)分析树以计算返回错误值的简单算术表达式
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- 如何在c++中打印目录
- 提升精神:解析布尔表达式并简化为规范范式
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 在线编译器中的分段C++没有打印消息
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- C++:正则表达式匹配代码,打印多个匹配项?
- std::cout 在打印变量与函数表达式时的行为不同
- 使用折叠表达式打印每个元素之间的空格
- 在C++中从后缀表达式字符串打印单个操作
- 将符号替换为表达式中的值并打印表达式输出
- c++二进制表达式树:如何打印带有适当括号的中缀表达式
- 打印笑脸胡子lambda表达式
- 打印表达式树
- 我的数学表达式转换器无法正确打印