我在里面
struct T { ... };
。如果我在头文件中声明并定义了一个函数,那么我创建该函数是否重要
inline
? 我是说,这不是默认考虑的吗
内联
在这种情况下?看来
内联
这对编译器来说更像是一个建议。所以,在这种情况下,可能意味着一个更强有力的建议(?)您的答案是否取决于函数是否实际上是模板函数?
编辑:
这里有一些相关的引用
C++ Referece
:
根据下面的引文
起初的
本条例草案的目的
内联
就像我在这里说的。不确定何时/是否更改,以及是否/如何恢复原始含义。
inline关键字的初衷是作为优化器的一个指示器,表明函数的内联替换优于函数调用,也就是说,不执行函数调用CPU指令将控制权转移到函数体,而是执行函数体的副本,而不生成调用。这避免了函数调用(传递参数和检索结果)所产生的开销,但可能会导致更大的可执行文件,因为函数的代码必须重复多次。
根据下面的引述,,
内联
只有
暗示
编译程序中的某些内容。
因为关键字inline的这一含义是非绑定的,所以编译器可以自由地对任何未标记为inline的函数使用inline替换,并且可以自由地生成对任何标记为inline的函数的函数调用。这些优化选择不会改变上面列出的关于多个定义和共享静态的规则。
因此,如果在当前的C++标准中,
内联
也就是说,我如何建议编译器内联一个实现(具有我上面引用的内联含义)。