内联函数(inline)
2012-11-05 19:53
120 查看
1.inline
如果使用了inline修饰函数,则该函数称为内联函数。
编译器将使用相应的函数代码替换函数调用。即对于内联代码,程序无需跳到另一个位置处执行代码,然后再跳回来。
因此,内联函数的运行速度比常规函数稍快,但是代价是需要占用更多的内存,因为在有内联函数调用的地方,都是内联函数的代码拷贝。
所以,如果代码执行时间较短,而调用的时间比较长,并且该函数经常被调用,则使用内联函数就可以节省调用时间。
要使用内联函数,必须才需下述措施之一:
1).在函数声明前加上关键字inline
2).在函数定义前加上关键字inline
2.头文件与inline
c/c++可以在头文件中定义函数,但是若在头文件中定义函数,必须加inline修饰定义为内联函数
3.inline与宏
下面是一个计算平方的宏
a=SQUARE(3) 结果是 a = 3*3 =9
b=SQUARE(3+1) 结果是 b=3+1*3+1 = 7
a=3 c=SQUARE(a++) 结果是 c=a++*a++=12
只有第一个能正常工作,只有加上括号第二个才能正常工作
但是可以考虑用内联函数
如果使用了inline修饰函数,则该函数称为内联函数。
编译器将使用相应的函数代码替换函数调用。即对于内联代码,程序无需跳到另一个位置处执行代码,然后再跳回来。
因此,内联函数的运行速度比常规函数稍快,但是代价是需要占用更多的内存,因为在有内联函数调用的地方,都是内联函数的代码拷贝。
所以,如果代码执行时间较短,而调用的时间比较长,并且该函数经常被调用,则使用内联函数就可以节省调用时间。
要使用内联函数,必须才需下述措施之一:
1).在函数声明前加上关键字inline
2).在函数定义前加上关键字inline
2.头文件与inline
c/c++可以在头文件中定义函数,但是若在头文件中定义函数,必须加inline修饰定义为内联函数
3.inline与宏
下面是一个计算平方的宏
#define SQUARE(x) x*x
a=SQUARE(3) 结果是 a = 3*3 =9
b=SQUARE(3+1) 结果是 b=3+1*3+1 = 7
a=3 c=SQUARE(a++) 结果是 c=a++*a++=12
只有第一个能正常工作,只有加上括号第二个才能正常工作
#define SQUARE(x) ((x)*(x))但是第三个仍然不行,应为简单的用后面的替代还是会加两次
但是可以考虑用内联函数
inline int square(int a){return a*a;}c = square(a++)则可以得出c=9, a=4;
相关文章推荐
- 内联函数inline,无比节省开销的
- static inline内联函数
- __forceinline 内联函数
- C++ inline内联函数使用注意事项
- inline内联函数
- C++中的内联函数inline总结
- ios内联函数 inline
- 内联函数inline优缺点
- 关于内联函数的几点总结以及构造析构是否可以是inline的
- inline 内联函数
- 重构--Inline Method(内联函数),Inline Temp(内联临时变量),Substitute Algorithm(替换算法)(五)
- inline-内联函数
- C++内联函数(Inline)介绍
- C++内联函数(Inline)介绍
- 内联函数 Inline Function 小结
- 类成员函数如何设为内联函数 inline
- C++内联函数inline
- (转载)(inline)内联函数不能为虚函数的原因(virtual)
- 内联函数inline的思考
- static inline内联函数