宏,内联函数
来源:互联网 发布:淘宝出售假冒违规处罚 编辑:程序博客网 时间:2024/06/02 01:28
Q:why需要这些讨厌的东东?
A:函数对解决大型复杂的问题起到了很大的作用,但是函数调用是需要开销的:调用时需要保护调用者的运行环境、进行参数传递、执行调用指令、为局部变量分配空间以及执行返回指令等。因此函数会使程序执行效率下降,尤其是对一些小函数的频繁调用将使程序的效率有很大的降低。宏和内敛函数是c/c++语言提供的解决上述问题的办法。
- 宏:用编译预处理命令#define来定义,有四种格式:
- #define <宏名> <文字串> //预处理时把出现宏名的地方用字符串替换
- #define <宏名>(<参数表>) <文字串> //宏调用,解决对小函数的调用效率问题
- #define <宏名> //不替换,用于实现条件编译
- #undef <宏名> //取消宏定义,此后<宏名>不再有定义、被替换
- 宏的不足之处:
- 重复计算:
eg:#define max(x+1,y+2) (x+1)>(y+2)?(x+1):(x+2)
不管谁大都会计算两遍。 - 不进行参数类型检查和转换
- 不利于代码调试(编译完后,所有的宏都不存在了)
- 重复计算:
鉴于上述宏的缺点,c++提供了另外一种机制:内联函数。
- 内联函数:inline int max(int a, int b){} 作用是建议编译程序把该函数的函数体展开到调用点
**只是建议,编译器有可能不会展开,比如遇到递归函数
**内联函数具有文件作用域(在a源文件中定义了,在b源文件中extern会报错,因为编译时看不到它的定义)
0 0
- 函数、宏、内联函数
- 内联函数 与 宏
- 宏与内联函数
- 宏与内联函数
- 内联函数和宏
- 内联函数和宏
- 内联函数与宏
- 宏和内联函数
- 宏与内联函数
- 宏和内联函数
- 宏和内联函数
- 宏与内联函数
- 宏与内联函数
- 内联函数和宏
- 宏与内联函数
- 内联函数和宏
- 宏与内联函数
- 宏与内联函数
- 05-树7 堆中的路径 (25分)
- 关于eclipse下开发android应用的几个常用插件
- cs231n 用卷积神经网络来进行图像识别
- 轮播图系列教程(三)函数调用及封闭空间形式案例——和派孔明
- 遍历set
- 宏,内联函数
- Linux下的platform总线驱动(二)
- 新手的学习之路—sizeof 的总结(1)
- Dijkstra算法求单源最短路径
- 安卓学习笔记之使用widget桌面小控件
- Linux用户空间的启动(一)
- Eclipse missing C/C++ build and general from project properties
- 开始→运行→输入的命令集锦
- 字符全排列