c++内联函数问题c++的内联函数inline关键字到底在哪声明???到底在函数声明前加,还是在函数定义的函数头前
c++内联函数问题
c++的内联函数inline关键字到底在哪声明???
到底在函数声明前加,还是在函数定义的函数头前加才有效??
c/c++高质量编程指南中说在定义前加,而我的c++教材说在函数声明前加,在定义前加为可选
到底怎样??在网上查也有两种说法
谢谢了
[解决办法]
[解决办法]
1.
A declaration is a definition unless it declares a function without specifying the function’s body (8.4)
函数定义也是一个函数申明
2.
Function-specifiers can be used only in function declarations.
函数指示符(inline,virtual等)只用在函数申明中。 因为函数定义也是函数申明, 所以放在函数定义中没有问题。
3.
If the definition of a function appears in a translation unit before its first declaration as inline, the program is ill-formed.
inline 申明必须出现在(没有inline的)函数定义之前。VC貌似没有遵守这条.
4.
编译器一般都会自行inline,即使没有申明为inline
5.
inline是一种优化,不是强制的,编译器有权决定是否优化。
