#define 宏定义问题
这个代码应该怎么解析??初学者看的不是很懂,求解答
#include <stdio.h>
#define STR(s) # s
int main()
{
printf(STR(Hello %s num = %d),STR(Word!),520);
return 0;
}
这是运行的结果:
Hello World! num = 520 为什么还可以使用%s和%d的??而且在printf()函数里直接用的...没有加上双引号的 sh-4.4$ cat main.c
//#include <stdio.h>
#define STR(s) # s
int main()
{
printf(STR(Hello %s num = %d),STR(Word!),520);
return 0;
}
sh-4.4$ gcc -E main.c
# 1 "main.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "main.c"
int main()
{
printf("Hello %s num = %d","Word!",520);
return 0;
}
sh-4.4$
#define STR(s) # s
int main()
{
printf(STR(Hello %s num = %d),STR(Word!),520);
return 0;
}
经过预处理后就是
int main()
{
printf("Hello %s num = %d","Word!",520);
return 0;
} Ref:
https://blog.csdn.net/huan447882949/article/details/76100155 人造人 发表于 2018-12-22 15:27
经过预处理后就是
看懂了,谢谢
页:
[1]