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

时间:2013-06-20 08:13:10

标签: 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怎么办?我应该如何编写预处理程序指令来执行此操作?

1 个答案:

答案 0 :(得分:1)

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

除了进行宏扩展外,m4还有内置函数,用于包含命名文件,运行shell命令,执行整数运算,以各种方式处理文本,执行递归等.... / p>

内置eval http://www.gnu.org/software/m4/manual/m4.html#Eval