急(C语言)比较带参的宏与带参的函数之间的区别

C语言简答题:比较带参的宏与带参的函数之间的区别请各位回答的详细点,谢谢~... C语言简答题:比较带参的宏与带参的函数之间的区别
请各位回答的详细点,谢谢~
展开
 我来答
tattackor
推荐于2016-03-29 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:892万
展开全部
区别:
1、宏会在编译器在对源代码进行编译的时候进行简单替换,不会进行任何逻辑检测,即简单代码复制而已。
2、宏进行定义时不会考虑参数的类型。
3、参数宏的使用会使具有同一作用的代码块在目标文件中存在多个副本,即会增长目标文件的大小。
4、参数宏的运行速度会比函数快,因为不需要参数压栈/出栈操作。
5、参数宏在定义时要多加小心,多加括号。
6、函数只在目标文件中存在一处,比较节省程序空间。
7、函数的调用会牵扯到参数的传递,压栈/出栈操作,速度相对较慢。
8、函数的参数存在传值和传地址(指针)的问题,参数宏不存在。
luosiyong
2009-01-04 · TA获得超过3256个赞
知道大有可为答主
回答量:1090
采纳率:0%
帮助的人:1628万
展开全部
宏是在编译器在对源代码进行编译的时候进行宏替换,即把带参数的调用的那段代码替换成宏定义的那段代码,实质代码替换,因此带参的宏不能进行递归定义。而带参的函数则会编译到可执行文件中,是一种执行的逻辑,可以递归定义,即可以写递归函数。
所以本质区别就是:
1,一个是代码替换,一个是生成了运行的逻辑。
2,宏定义的不能递归定义,即不可以用宏定义一个递归函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
theodorez
2009-01-05 · TA获得超过430个赞
知道答主
回答量:261
采纳率:0%
帮助的人:181万
展开全部
宏:代码替换,不检查数据类型,实质上由编译器展开,变量作用域在主程序,

函数:子程序,数据类型,编译成子程序,局部变量,(调用时局部变量入栈故可以递归)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
handsomedtl
推荐于2018-03-13
知道答主
回答量:10
采纳率:0%
帮助的人:7.6万
展开全部
1.宏会在编译器在对源代码进行编译的时候进行简单替换,不会进行任何逻辑检测,即简单代码复制而已。
2.宏进行定义时不会考虑参数的类型。
3.参数宏的使用会使具有同一作用的代码块在目标文件中存在多个副本,即会增长目标文件的大小。
4.参数宏的运行速度会比函数快,因为不需要参数压栈/出栈操作。
5.参数宏在定义时要多加小心,多加括号。
6.函数只在目标文件中存在一处,比较节省程序空间。
7.函数的调用会牵扯到参数的传递,压栈/出栈操作,速度相对较慢。
8.函数的参数存在传值和传地址(指针)的问题,参数宏不存在。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式