dud*_*ade 3 c++ inline-functions
声明:"必须在调用内联函数之前定义它们."
这个陈述是否正确?
[编辑]
问题最初是德语:
Inline-Funktionenmüssenvorihrem Aufruf definiert sein.
也许它可以帮助任何人......
是的,它是正确的,但只是部分的.它可能正确地重新框架如下:
"内联函数必须在调用它们的每个翻译单元中定义(但不一定在之前)."
C11 ++标准:§7.1.2.4
内联函数应在每个使用它的翻译单元中定义,并且在每种情况下都应具有完全相同的定义.[注意:在其定义出现在翻译单元之前,可能会遇到对内联函数的调用. - 尾注]
为什么这个理由?
当你基本上声明一个函数时你正在告诉编译器(如果可能的话)用调用函数的任何地方替换用函数内容调用函数的代码.这个想法是函数体可能很小,并且调用函数比函数本身的开销更大.
为了能够这样做,编译器需要在编译调用函数的代码时查看定义.通常,这是通过在标题中添加函数的定义来完成的inline,然后在每个要调用函数的cpp文件中包含头文件.
| 归档时间: |
|
| 查看次数: |
281 次 |
| 最近记录: |