C开发中带参数的宏定义与探讨

2019-07-15 00:06发布

C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数,这点和函数有些类似。

对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。

带参宏定义的一般形式为:
#define 宏名(形参列表) 字符串
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
vibra2016
1楼-- · 2019-07-15 10:33
2) 在带参宏定义中,不会为形式参数分配内存,因此不必指明数据类型。而在宏调用中,实参包含了具体的数据,要用它们去代换形参,因此必须指明数据类型。

这一点和函数是不同的:在函数中,形参和实参是两个不同的变量,都有自己的作用域,调用时要把实参的值传递给形参;而在带参数的宏中,只是符号的替换,不存在值传递的问题。
vibra2016
2楼-- · 2019-07-15 12:11
 精彩回答 2  元偷偷看……
chuntian2016
3楼-- · 2019-07-15 12:32
vibra2016 发表于 2017-11-24 22:16
对带参宏定义的说明

1) 带参宏定义中,形参之间可以出现空格,但是宏名和形参列表之间不能有空格出现。例 ...

这个注意括号的使用的
Mattheww
4楼-- · 2019-07-15 15:25
在带参数的宏中,只是符号的替换,不存在值传递的问题。
kkzz
5楼-- · 2019-07-15 18:35
vibra2016 发表于 2017-11-24 22:16
对带参宏定义的说明

1) 带参宏定义中,形参之间可以出现空格,但是宏名和形参列表之间不能有空格出现。例 ...

这个哪里有问题?
hudi008
6楼-- · 2019-07-15 21:15
#define 指令----带参数的宏】

一周热门 更多>