| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 893 人关注过本帖
标题:C语言中宏与函数的区别,求大神讲细点
只看楼主 加入收藏
小小程序猿
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:1
帖 子:755
专家分:2785
注 册:2013-7-18
结帖率:100%
收藏
已结贴  问题点数:38 回复次数:14 
C语言中宏与函数的区别,求大神讲细点
菜鸟求教
2013-07-19 09:48
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:6 
百度能够找到很详细的答案

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-07-19 10:44
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:6 
宏是在编译时做的一个替换, 你可以理解为宏是编译器把代码替换为宏定义的内容, 这个动作完全可以由你用替换来达到,但宏増加了代码可读性和可维护性。
函数是在执行时调用的是运行期才有的。不仅仅是函数,定义和宏的主要区别在预编译的时候,定义在预编译的时候的主要操作时分配空间或内存,宏是进行了替换。比如#define n1000 ,预编译的时候所有的n此时全部换成了1000,若int n =1000;只是这个n是1000,如果后边还有用到的n,此时还可以理解是n,而不是1000

[ 本帖最后由 love云彩 于 2013-7-19 10:52 编辑 ]

思考赐予新生,时间在于定义
2013-07-19 10:51
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:6 
一句话,宏就是编译之前的文本搜索与替换。

授人以渔,不授人以鱼。
2013-07-19 10:51
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:6 
宏就是查找替换

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-07-19 11:19
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
很多人爱津津乐道于宏的效率,说比函数快云云,先不说宏没了类型检查的缺陷,单说这直接嵌入代码使代码占用内存空间大了的代价就足以弥补节省函数压栈退栈时间的开销,嵌入的份数越多,空间消耗越大。那种“可读性”只是在源代码表面上看来有的,但预编译之后,正式进入编译期,这种可读性就是浮云。

授人以渔,不授人以鱼。
2013-07-19 11:24
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

授人以渔,不授人以鱼。
2013-07-19 11:50
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
这什么书?求教育

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-07-19 12:17
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用peach5460在2013-7-19 12:17:11的发言:

这什么书?求教育

《C++编程规范》

授人以渔,不授人以鱼。
2013-07-19 12:19
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:6 
回复 9楼 TonyDeng
不错的书,没想到T版,现在还在不断学习,惭愧啊!

Maybe
2013-07-19 13:06
快速回复:C语言中宏与函数的区别,求大神讲细点
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032274 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved