1809228982 发表于 2018-12-22 14:54:04

#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

1809228982 发表于 2018-12-22 14:56:05

为什么还可以使用%s和%d的??而且在printf()函数里直接用的...没有加上双引号的

人造人 发表于 2018-12-22 15:27:00

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;
}

风扫地 发表于 2018-12-22 15:48:44

Ref:
https://blog.csdn.net/huan447882949/article/details/76100155

1809228982 发表于 2018-12-24 08:14:38

人造人 发表于 2018-12-22 15:27
经过预处理后就是

看懂了,谢谢
页: [1]
查看完整版本: #define 宏定义问题