在这个答案中https://stackoverflow.com/a/4193698/738811它写道“内联函数默认有外部链接”。然而,默认情况下不可能链接到内联的东西。那么说内联函数有外部链接有什么意义呢?内联函数和外部链接
5
A
回答
5
名称的链接与其定义的位置或方式无关,只与名称可能用于引用特定对象或函数的位置无关。
声明一个函数内联不会强制它被内联;它只是放松一个定义规则以允许在其使用的每个翻译单元中定义(并且需要在其所称的每个翻译单元中有一个定义),以使其更易于内联。它不会阻止生成非内联版本,如果编译器决定不内联某个特定的调用,或者如果您获取它的地址。
所以“外部连接”和“内联”不是唯一的; “外部链接”意味着可以在任何翻译单元中引用该功能,“内嵌”意味着它必须在任何调用它的翻译单元中定义。
0
也许更好的表达方式是“如果需要连接,它将是外部的”。这意味着,如果你使用内联函数的地址,该地址将在外部可见(不是模块的静态地址)。
0
内联函数不一定以内联方式扩展。当它们不是时,语言定义要求只有一个函数副本。
0
内联函数通常与其他编译单元“可链接”。它们不会显示为内联函数。在编译的文件中有一个函数的副本。这适用于免费的内联函数。类成员函数通常不会获得“非内联”使用函数的副本。好的链接器也会将代码作为“死代码”删除,如果它从未被重新引用。
相关问题
- 1. 内部和外部链接
- 2. 内联函数链接
- 3. 内部和外部反向链接
- 4. 内部联接和外部联接产生相同的结果
- 5. SQL查询:复杂的内部联接和外部联接
- 6. ASM内联调用C外部函数
- 7. 内部连接,并外部联接
- 8. 外部静态函数声明是否打破内部链接?
- 9. 内联函数链接器错误
- 10. 内联函数的链接错误
- 11. 链接器内联函数可以吗?
- 12. SQL:加入三个表 - 内部/外部联合外部联接?
- 13. 通过外键链接的三个表上的内部联接
- 14. C++私有函数的内部链接?
- 15. 如何将函数定义为C99中的内联内部和外部副本
- 16. C静态内联函数调用外部函数动机
- 17. App Store和外部链接
- 18. 的WebView和外部链接
- 19. MYSQL组和内部联接
- 20. JS没有通过外部链接读取,但读取内联
- 21. 外部链接
- 22. 外部链接或内部链接网址
- 23. 自我加入内部和外部联接查询
- 24. jQuery和内联和外部CSS
- 25. MySQL选择内部联接和联合
- 26. SQL-外部联接?
- 27. Jscrollpane和内部锚链接
- 28. HTML页面上的内部和外部链接是什么?
- 29. 内部和外部的链接列表元素不工作
- 30. 如何在外部和内部链接脚本?