2

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

#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 怎么办?我应该如何编写预处理器指令来做到这一点?

4

1 回答 1

1

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

除了宏扩展之外,m4 还内置了包括命名文件、运行 shell 命令、进行整数运算、以各种方式操作文本、执行递归等功能。

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

于 2013-06-20T08:22:39.703 回答