内联函数和宏定义的区别
来源:互联网 发布:cpc广告发布网站源码 编辑:程序博客网 时间:2024/06/15 20:24
使用宏和内联函数都可以节省在函数调用方面所带来的时间开销。二者都采用了空间换时间的方式,在其调用处进行展开:
(1) 在预编译时期,宏定义在调用处执行字符串的原样替换。
在编译时期,内联函数在调用处展开,同时进行参数类型检查(而 宏 不检查)。
(2) 内联函数首先是函数,可以像调用普通函数一样调用内联函数。
而宏定义往往需要添加很多括号防止歧义,编写更加复杂。
(3) 内联函数可以作为某个类的成员函数,这样可以使用类的保护成员和私有成员。(在类中声明同时定义的成员函数,自动转化为内联函数。)
而当一个表达式涉及到类保护成员或私有成员时,宏就不能实现了(无法将this指针放在合适位置)。
(4) 内联函数在运行时可调试,而宏定义不可以
可以用内联函数完全替代宏。
在编写内联函数时,函数体应该短小而简洁,不应该包含循环等较复杂结构,否则编译器不会将其当作内联函数看待,而是把它决议成为一个静态函数。
有些编译器甚至会优化内联函数,通常为避免一些不必要拷贝和构造,提高工作效率。
频繁的调用内联函数和宏定义容易造成代码膨胀,消耗更大的内存而造成过多的换页操作。
http://blog.csdn.net/ljlstart/article/details/51284906
http://blog.csdn.net/will130/article/details/48712453
阅读全文
0 0
- 内联函数和宏定义的区别
- 内联函数和宏定义的区别
- 内联函数和宏定义的区别
- 内联函数和宏定义的区别
- 宏定义和内联函数的区别
- 内联函数和宏定义的区别
- 内联函数和宏定义的区别
- 内联函数和宏定义的区别
- 内联函数和宏定义的区别
- 内联函数和宏定义的区别
- 内联函数和宏定义的区别
- 内联函数和宏定义的区别
- 内联函数和宏定义的区别
- 内联函数和宏定义的区别
- 内联函数和宏定义的区别
- 内联函数和宏定义的区别
- 内联函数和宏定义的区别
- 内联函数和宏定义的区别
- Banner的简单实用
- 中介者模式(mediator)c++版本
- webservice传值报错潜在危险的 Request.Form 值。
- android 获取Imei
- 3、线程的休眠
- 内联函数和宏定义的区别
- C++ GMP库实现任意位数的Montgomery Modular Multiplication
- Java线程中断
- TimesTen 应用层数据库缓存学习:20. TimesTen异常时的缓存清理
- Java并发编程:ConcurrenthashMap原理分析(1.7)
- 定时任务接口ScheduledExecutorService
- 【JavaScript 学习--09】--理解Js 中的apply 和 call方法
- python训练模型上线问题总结
- gcc添加自写头文件的问题解决