Unicorn# 发表于 2020-7-28 17:53:47

带参宏的问题

#define ADD(A, B) printf(#A " + " #B " = %d\n", ((A)+(B)))
这一句中为什么可以这样写:#A " + " #B " = %d\n"。 #A不是字符串吗,#A和字符串" + "直接相连为什么不报错

zltzlt 发表于 2020-7-28 17:56:06

井号 # 将 A 和 B 变成了字符串

Unicorn# 发表于 2020-7-28 17:57:45

zltzlt 发表于 2020-7-28 17:56
井号 # 将 A 和 B 变成了字符串

#A是字符串,和字符串" + "直接连写为什么表示字符串的连接

zltzlt 发表于 2020-7-28 18:00:50

Unicorn# 发表于 2020-7-28 17:57
#A是字符串,和字符串" + "直接连写为什么表示字符串的连接

我也不太清楚,中间加上加号拼接反而会报错{:10_250:}

Unicorn# 发表于 2020-7-28 18:05:31

zltzlt 发表于 2020-7-28 18:00
我也不太清楚,中间加上加号拼接反而会报错

        char* a = "123""234";
        printf("123""234""\n");
        printf("%s", a);
居然可以这样...奇怪的语法增加了

zltzlt 发表于 2020-7-28 18:06:37

Unicorn# 发表于 2020-7-28 18:05
居然可以这样...奇怪的语法增加了

{:10_257:}

SHRS23 发表于 2020-7-28 23:26:54

还真的是奇怪的语法知识,以前真的没注意过,还是看书不仔细啊。

下图《C Primer Plus 第6版中文版》P322


下图《C程序设计语言 第二版》P38


下图是我自己做了个测试
页: [1]
查看完整版本: 带参宏的问题