| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2080 人关注过本帖
标题:用inline函数和宏定义什么区别?
只看楼主 加入收藏
zjsxwc
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:252
专家分:601
注 册:2011-1-20
结帖率:93.75%
收藏
已结贴  问题点数:10 回复次数:4 
用inline函数和宏定义什么区别?
我怎么感觉没区别
搜索更多相关主题的帖子: 函数 
2011-01-31 20:03
huangapple
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:545
专家分:1790
注 册:2010-12-30
收藏
得分:3 
inline 定义的函数如果你写了太多行,系统会放弃用内联的方式编译,会采用调用的方式
而宏定义就不管你写多少了
不知道是不是这样,还望其它人多多补充

勤能补拙,熟能生巧!
2011-02-01 00:02
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:3 
宏就是个字符串替换。
inline 更像是普通函数。

比如
#define m(a) ((a) + (a))
你希望用这个宏来得到参数的两倍。但有可能有人会这么用。
m(++x),并以为会先自增 x,然后得到自增后的两倍。
不过其实它被替换成了 ((++x) + (++x))。x 会自增两次,而且表达式的值还依赖编译器了。

如果用 inline 函数没有类似的问题。


当然还有点其它区别,用的时候可以自己体会之。记住宏只是机械的替换一下就行了。2 楼说的也是一方面。



[ 本帖最后由 pangding 于 2011-2-1 00:39 编辑 ]
2011-02-01 00:35
cacker
该用户已被删除
收藏
得分:3 
提示: 作者被禁止或删除 内容自动屏蔽
2011-02-01 00:51
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
哦,对。这两个预处理操作符确实给宏增色了不少。
反正能正确使用就行了。inline 在 C 语言里用的不是很多,而且也是 99 标准新加的。很多编译器可能对它支持的不是很好。
2011-02-01 09:43
快速回复:用inline函数和宏定义什么区别?
数据加载中...
 
   



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

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