热血传奇道战和法战:帮忙解释一下宏定义#define print(x) printf(#x) 是怎么替换的

来源:百度文库 编辑:高校问答 时间:2024/05/04 19:32:26

不要误人子弟。。。
#是C语言中宏定义里的一个操作符
英文名叫Stringizing Operator
中文名我也不知道
简单说,它的意思就是使用参数被双引号包住
#@是使参数用单引号包住
##是粘结
看MSDN上鸟语写的也太费劲
我就给你举个例子
就比如你这样定义之后
#define print(x) printf(#x)
在程序中写
print(123);
实际上是相当于
printf("123");
就直接输出123
如果
print("123");
就相当于
printf("\"123\"");
就输出"123"
再补充一下
如果
print("\n");
就相当于
printf("\"\\n");
就输出
"\n"

编译器在编译时候,遇到 print(x) 将替换为 printf(#x) 。