【发布时间】:2015-08-30 17:13:13
【问题描述】:
我不是在问为什么或何时应该在某些代码中使用inline。
我使用inline,我认为这是很常见的(比如在get/set函数中)。我在堆栈上阅读了一些不寻常的示例,其中inline 听起来很有必要。我不确定我是否会在我的代码中识别出这种情况...我的意思是,直到我遇到问题...
所以我想知道对于通常情况,编译器是否能像我一样处理这个问题,甚至可能更好......
我想避免inline的原因是为了避免在标题中实现......关于这个问题我脑海中浮现:
编译器(在我的问题中总是考虑 GCC 编译器)是否能够inline 标头中未实现的函数?
n.b. : 不知道C++14中inline是否有一些内部变化。
【问题讨论】:
-
如果你在头文件中实现了一个非内联函数,当从多个源文件中包含多重定义的符号时,你会得到一个链接器错误
-
@NikosAthanasiou 好吧,我不想在标题中实现......正如我在问题中写的那样
-
@juanchopanza,“是/是否......?”我打赌,我输了……
-
您说的是“内联”方法,即在类定义中实现?
-
gcc 不能从另一个编译单元内联函数,除非您使用链接时间优化(通过 -flto 标志进行编译和链接) - 但在这种情况下,它做得很好。跨度>