作业帮 > 综合 > 作业

警告信息 ``warning: macro replacement within a string literal" 是

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/04/29 06:21:44
警告信息 ``warning: macro replacement within a string literal" 是什么意思?
警告信息 ``warning: macro replacement within a string literal
有些 ANSI 前的编译器/预处理器把下面这样的宏
#define TRACE(var,fmt) printf("TRACE:var = fmt\n",var)
TRACE(i,%d);
这样的调用会被扩展为
printf("TRACE:i = %d\n",i);
换言之,字符串常量内部也作了宏参数扩展.
K&R 和标准 C 都没有定义这样的宏扩展.当你希望把宏参数转成字符串时,你可以使用新的预处理操作符 # 和字符串常量连接 (ANSI 的另一个新功能):
#define TRACE(var,fmt) \
printf("TRACE:" #var " = " #fmt "\n",var)