c ++中的内联函数 - 条件

Amo*_*mol 6 c++

在什么条件下内联函数不再是内联函数并且作为任何其他函数?

Alo*_*ave 8

神话:
inline只是编译器可能会或可能不会遵守的建议.一个好的编译器无论如何都会做需要做的事情.

真相:
inline通常向实现指示在调用点处函数体的内联替换优先于通常的函数调用机制.在呼叫点执行此内联替换不需要实现; 但是,即使inline省略了这种替换,也遵循其他规则(尤其是一个定义规则)inline.

在什么条件下,inline函数不再是一个inline函数,并且作为任何其他函数?

鉴于引用的事实,这个问题有更深层次的背景.

当你将一个函数声明为static inline函数时,该函数就像任何其他static函数一样,关键字inline不再重要,它变得多余.

static对功能关键字强制inline函数具有内部键.(inline功能具有外部连接)这样的功能中的每一个实例被视为一个单独的功能(各功能的地址是不同的)和这些功能中的每一种情况下都有自己的副本静态局部变量和字符串文字(一个inline函数只有这些的一个副本).