我应该何时inline在C++中为函数/方法编写关键字?
看到一些答案,一些相关的问题:
我应该何时不写在C++函数/方法关键字"内联"?
什么时候编译器不知道何时使函数/方法'内联'?
当一个应用程序为函数/方法写入"内联"时,是否多线程是否重要?
我问这个基本问题是为了让记录笔直.已经提到这个问题和它的目前公认的答案,这是不能令人信服的.然而,第二多投票的答案提供了更好的洞察力,但也不完美.
在阅读下面时,区分inline 关键字和"内联" 概念.
这是我的看法:
这样做是为了节省函数的调用开销.它更类似于宏式代码替换.没有什么可争议的.
inline关键字该
inline关键字是一个请求,以通常用于较小的函数的编译器,以便编译器可以优化它和做出更快的呼叫.编译器可以忽略它.
我对此提出异议,原因如下:
inline关键字.inline提及或不提及关键字,优化器都会自动内联较小的函数.很明显,用户对使用关键字的函数内联没有任何控制权inline.
inline有没有做内联的概念.把inline大/递归函数的未来将不利于小功能,不再需要它,为被内联.在只确定使用的
inline是保持一个定义规则.
即如果声明了一个函数,inline那么只有下面的东西是强制性的:
.cpp文件中包含该头),编译器也只生成1个定义并避免多个符号链接器错误.(注意:如果该函数的主体不同,那么它是未定义的行为.)inline功能的主体必须在使用它的所有翻译单元中可见/可访问.换句话说,在任何一个文件中声明inline函数.h和定义将导致其他文件的"未定义的符号链接器错误" .cpp.cpp"A"感觉完全错误,"B"感觉完全正确.
标准中有一些引用,但我期待一个答案,从逻辑上解释这个判决是真还是假.