c - 在预处理器中显示之前评估常量

标签 c c-preprocessor evaluate

在这个网站上,我发现了在预处理器中显示常量值的技巧,例如:

#define VALUE_TO_STRING(x) #x
#define VALUE(x) VALUE_TO_STRING(x)
#define VAR_NAME_VALUE(var) #var "="  VALUE(var)
#define A 5
#pragma display(VAR_NAME_VALUE(A))

生成输出 A=5

它们工作得很好,但是当我需要评估类似的东西时:

#define A 5
#define B (A*5)
#pragma display(B)

它显示输出 B=5*5。

如果我想显示B=25怎么办?我应该如何编写预处理器指令来执行此操作?

最佳答案

你不能,宏替换机制不涉及计算,但你可以看看GNU M4:

除了宏扩展之外,m4 还内置了一些函数,包括命名文件、运行 shell 命令、进行整数运算、以各种方式处理文本、执行递归等......

在内置评估 http://www.gnu.org/software/m4/manual/m4.html#Eval

关于c - 在预处理器中显示之前评估常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17208531/

相关文章:

c++ - C 与 C++ 数值配方

c - 为什么取消定义宏会在#undef 到达之前生效?

string - Groovy:从字符串计算的时间减法

javascript - 如何运行 mongo --eval?

c - C 编程中是否没有 case 语句,而不是 switch case 顺便说一句

c - 从结构体定义的数组中打印出字符串

c - C宏中两个相邻的井号是什么意思?

Excel 计算公式错误

c - Lua函数的返回值

c++ - "define"函数返回类型前