inline function
inline 限定符,仅仅是对编译器的建议,建议编译器不实行调用,而是,将函数插入进去。
对于没有声明为inline的函数,编译器可能优化函数,不实现调用,而是实现将函数插入进去。
虽然编译器有足够的自主性,但是,终究,它还是要满足c++标准。
标准中,指出在每个translation unit,都必须定义inline函数,而不仅仅是声明;对于多个translation unit 使用同名inline函数,这个函数必须相同;如果不同,在链接生成整个程序的时候,可能会造成undefined 的行为。
如果想要在多个translation unit 中定义同名但是又不同的inline函数,必须要声明static 限定符。