我想知道是否有任何方法可以转义宏名称并实际显示真实姓名:
#define BUFF_SIZE 500
printf("%d", BUFF_SIZE);
在不删除定义的情况下,是否可以不展开BUFF_SIZE
?
答案 0 :(得分:3)
有时您可能希望将宏参数转换为字符串 不变。参数不会在字符串常量内替换,但是你 可以使用'#'预处理运算符。当一个宏参数 与前导'#'一起使用,预处理器将其替换为 实际参数的文字文本,转换为字符串常量。 与普通参数替换不同,参数不是 首先是宏观扩张。这称为字符串化。
#include <stdio.h>
#define BUFF_SIZE 500
#define STR(x) #x
int main(void)
{
printf("%s\n", STR(BUFF_SIZE));
return 0;
}
请注意,您无法使用%d
打印字符串,请使用%s
。