代码之家  ›  专栏  ›  技术社区  ›  Koosha

如果我在头文件中声明并定义一个函数,那么将函数内联是否重要?

  •  0
  • Koosha  · 技术社区  · 5 年前

    我在里面 struct T { ... }; 。如果我在头文件中声明并定义了一个函数,那么我创建该函数是否重要 inline ? 我是说,这不是默认考虑的吗 内联 在这种情况下?看来 内联 这对编译器来说更像是一个建议。所以,在这种情况下,可能意味着一个更强有力的建议(?)您的答案是否取决于函数是否实际上是模板函数?

    编辑: 这里有一些相关的引用 C++ Referece :

    根据下面的引文 起初的 本条例草案的目的 内联 就像我在这里说的。不确定何时/是否更改,以及是否/如何恢复原始含义。

    inline关键字的初衷是作为优化器的一个指示器,表明函数的内联替换优于函数调用,也就是说,不执行函数调用CPU指令将控制权转移到函数体,而是执行函数体的副本,而不生成调用。这避免了函数调用(传递参数和检索结果)所产生的开销,但可能会导致更大的可执行文件,因为函数的代码必须重复多次。

    根据下面的引述,, 内联 只有 暗示 编译程序中的某些内容。

    因为关键字inline的这一含义是非绑定的,所以编译器可以自由地对任何未标记为inline的函数使用inline替换,并且可以自由地生成对任何标记为inline的函数的函数调用。这些优化选择不会改变上面列出的关于多个定义和共享静态的规则。

    因此,如果在当前的C++标准中, 内联 也就是说,我如何建议编译器内联一个实现(具有我上面引用的内联含义)。

    0 回复  |  直到 5 年前