Chinaunix首页 | 论坛 | 博客
  • 博客访问: 20218
  • 博文数量: 11
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2015-01-28 15:24
个人简介

为了美好生活,加油!

文章分类
文章存档

2015年(11)

我的朋友

分类: 嵌入式

2015-01-30 15:51:30

首先要清楚几个概念:
1. 内联是对宏的补充,不是替代。(参考5)
2. 程序员使用内联而不使用宏,与你说的相反,正好是因为他希望内联失败的存在。
3. 如果写代码的人不希望内联失败,那么他应该使用宏,而不是内联。
4. 内联失败的时候,是编译器觉得不内联效果更好,性能更强。
5. 程序员使用内联,是因为他不知道是用函数效率高,还是宏效率高,于是使用内联把这件事交给编译器去做。
6. 顺便说下内联函数里面有分支,很常见。
宏仅仅是文本串替换,而且再稍微复杂的情况下有些行为是未定义的,所以会看到很多书中是不提倡用宏的
在函数方面, 首先 宏不会进行类型检查,边界检查等,这是用macro宏的不安全性。
其次,宏替换总会被执行, 而inline是一种建议操作,而不是强制性的,会不会展开取决于编译器, 如果编译器认为展开会影响整体性能(比如inline函数里代码太多,比较复杂等),则放弃inline,而是按普通函数调用。

__inline通知编译器将该函数的内容拷贝一份放在调用函数的地方,这称之为内联。内联减少了函数调用的开销,但却增加了代码量。
阅读(6733) | 评论(0) | 转发(0) |
0

上一篇:ARM汇编程序中常见的伪指令分析

下一篇:没有了

给主人留下些什么吧!~~