Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在预处理器中显示常量之前先对其求值_C_C Preprocessor_Evaluate - Fatal编程技术网

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命令、进行整数运算、以各种方式操作文本、执行递归等功能

内置评估时