内联函数/方法

dud*_*ade 3 c++ inline-functions

声明:"必须在调用内联函数之前定义它们."

这个陈述是否正确?

[编辑]

问题最初是德语:
Inline-Funktionenmüssenvorihrem Aufruf definiert sein.

也许它可以帮助任何人......

Alo*_*ave 5

是的,它是正确的,但只是部分的.它可能正确地重新框架如下:

"内联函数必须在调用它们的每个翻译单元中定义(但不一定在之前)."

C11 ++标准:§7.1.2.4

内联函数应在每个使用它的翻译单元中定义,并且在每种情况下都应具有完全相同的定义.[注意:在其定义出现在翻译单元之前,可能会遇到对内联函数的调用. - 尾注]

为什么这个理由?

当你基本上声明一个函数时你正在告诉编译器(如果可能的话)用调用函数的任何地方替换用函数内容调用函数的代码.这个想法是函数体可能很小,并且调用函数比函数本身的开销更大.

为了能够这样做,编译器需要在编译调用函数的代码时查看定义.通常,这是通过在标题中添加函数的定义来完成的inline,然后在每个要调用函数的cpp文件中包含头文件.

  • 我在你的引文中没有看到"之前"这个词,或者任何等同词. (3认同)