C 在预处理器中显示常量之前先对其求值
在这个网站上,我发现了在预处理器中显示常量值的技巧,比如:C 在预处理器中显示常量之前先对其求值,c,c-preprocessor,evaluate,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*
#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命令、进行整数运算、以各种方式操作文本、执行递归等功能 内置评估时