解释下C语言宏定义的一道题

来源:百度知道 编辑:UC知道 时间:2024/05/11 16:46:11
#define print(x) printf(”the no, ”#x”,is ”)

这里主要是两个语法。 一是在define语句里, #x 的意思是,替换为一个以x为内容的字符串。 比如 如果你调用 print(10) 那么#x 就等于是写 "10" 这样的。

第二个语法是, 在C语言里, 连续写两个字符串(不需要任何操作符链接)就等于把它们连接起来。 比如 "the no." "is" 就跟写 "the no.is" 是一回事。 (这个语法大概很多人不知道。。其实是很基本的语法,只不过一般用不上所以不起眼)

有这两点这个很容易理解 比如 print(10)在这里会被展开成: printf("the no." "10" ",is") 也就等价于: printf("the no.10,is")

在主函数中出现print(x) 就代替这一语句printf(”the no, ”#x”,is ”)
也就是凡是出现print(x) 的地方都用printf(”the no, ”#x”,is ”)这一语句代替 printf(”the no, ”#x”,is ”)这一语句的意思是输出the no, ”#x”,is

呵呵 你要理解宏定义的含义啊,所谓宏定义就是等效替换.
你代码写print(XXXXYYYY)和调用函数
printf(”the no, ”#XXXXYYYY”,is ”)效果是一模一样的.
都相当于在屏幕上打印出来这么一句话: "the no, #XXXXYYYY,is"
XXXXYYYY是我乱打的,实际的肯定就是数字了.