c++内联函数有关问题

c++内联函数问题c++的内联函数inline关键字到底在哪声明???到底在函数声明前加,还是在函数定义的函数头前

c++内联函数问题
c++的内联函数inline关键字到底在哪声明???
到底在函数声明前加,还是在函数定义的函数头前加才有效??
c/c++高质量编程指南中说在定义前加,而我的c++教材说在函数声明前加,在定义前加为可选

到底怎样??在网上查也有两种说法

谢谢了



[解决办法]

探讨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是一种优化,不是强制的,编译器有权决定是否优化。