【转】#define 和内联函数
来源:互联网 发布:淘宝助理tbi文件 编辑:程序博客网 时间:2024/05/16 14:56
技术 2009-10-18 14:35:54 阅读101 评论0 字号:大中小 订阅内联函数的功能和预处理宏的功能相似。宏在C中是经常用的,为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数 所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去执行前要保存现场并记忆执行的地址,转回后要恢复现场,并按原来保存地址继续执行。因此,函数调用要有一定的时间和空间方面的开销,于是将影响其效率。而宏只是在预处理的地方把代码展开,不需要额外的空间和时间方面的开销,所以调用一个宏比调用一个函数更有效率。 但是宏也有很多的不尽人意的地方。 1、.宏不能访问对象的私有成员。 2、.宏的定义很容易产生二意性。现在有了C++,我们可以使用内联函数 来取代宏的定义。而且事实上我们可以用内联函数完全取代预处理宏。内联函数和宏的区别在于,宏是由预处理器对宏进行替代,而内联函数是 通过编译器控制来实现的。而且内联函数是真正的函数,只是在需要用到的时候,内联函数像宏一样的展开,所以取消了函数的参数压栈,减少了调用的开销。你可以象调用函数一样来调用内联函数,而不必担心会产生于处理宏的一些问题。内联函数在C++类中,应用最广的,应该是用来定义存取函数。我们定义的 类中一般会把数据成员定义成私有的或者保护的,这样,外界就不能直接读写我们类成员的数据了。 对于私有或者保护成员的读写就必须使用成员接口函数来进行。如果我们把这些读写成员函数定义成内联函数的话,将会获得比较好的效率。Class sample{ Private: Int nTest; Public: Int readtest(){ return nTest;} Void settest(int I) {nTest=I;}} 当然,内联函数也有一定的局限性。就是函数中的执行代码不能太多了,如果,内联函数的函数体过大,一般的编译器会放弃内联方式,而采用普通的方式调用函数。这样,内联函数就和普通函数执行效率一样了
- 【转】#define 和内联函数
- define和内联函数
- 内联(inline)函数和宏定义(#define)的区别
- 深入理解C语言的define和内联函数
- C++ 引用和指针 const与#define #define与内联函数
- 内联函数和宏
- 内联函数和宏
- 宏和内联函数
- 宏和内联函数
- 宏和内联函数
- 内联函数和宏
- 内联函数和宏
- 内联函数和宏
- Static和内联函数
- 宏和内联函数
- 内联函数和宏
- 指针、枚举、数组、typedef、内联函数、define、extern、static变量
- 宏、函数和内联函数
- sas
- 软件设计师重点难点——操作系统
- 常用的8个DOS命令
- 软件设计师重点难点——多媒体
- WINCE6.0+S3C2443的启动过程---eboot1
- 【转】#define 和内联函数
- WINCE5.0+S3C2443系统每隔几分钟会自动关闭LCD显示
- WINCE5.0+2443 camera中断不能进来的原因
- 基于xp系统搭建android开发环境
- WINCE config.bib文件中的FSRAMPERCENT的意义
- WINCE6.0+S3C2443的启动过程---eboot3
- char *p=new char
- CE5.0 - romimage.exe如何填充eboot.bin中的pTOC特殊指针生成.nb0
- 开通博客