我正在考虑之间的标题只与头&源设计。我不确定头文件&源代码是否允许编译器跨目标文件和跨链接进行优化?如内联优化?C编译器能够跨目标文件进行优化吗?
0
A
回答
3
通常将头文件和源文件编译为单个翻译单元(因为头文件包含在源文件中)。所以,这不会是一个问题(除非你有一个独特的环境,其中 头被分别编译)。
GCC支持跨不同翻译单元进行优化。请参阅Link Time Optimization。
见-flto
选项的使用说明:
-flto [= N]
这个选项运行标准的链接时优化。当用 源代码调用时,它将生成GIMPLE(GCC的内部 表示之一),并将其写入对象 文件中的特殊ELF部分。当目标文件链接在一起时,所有功能 正文从这些ELF部分读取并实例化,就好像它们的 已经是同一翻译单元的一部分。要使用链接时间优化器 ,应在编译时和最终链接期间指定-flto和优化选项。建议您 使用相同的 选项编译参与同一链接的所有文件,并在链接时指定这些选项。
相关问题
- 1. C# - Visual Studio 2008能够进行条件编译吗?
- 2. Can/do C编译器能够优化内联函数的地址吗?
- 3. 你能链接用不同优化级别编译的目标文件吗?
- 4. C++编译器优化
- 5. 编译器优化
- 6. 编译器优化
- 7. 通过优化编译的Xcode目标
- 8. 用优化标志编译C
- 9. 使用Visual Studio项目文件进行跨平台编译
- 10. C++编译器能够自动消除重复的代码吗?
- 11. 编写代码以帮助编译器进行优化
- 12. 虚拟函数编译器优化C++
- 13. 不C#编译器优化空语句
- 14. C编译器结构优化
- 15. C#编译器优化循环?
- 16. C++ 0x优化编译器质量
- 17. Delphi编译器是否执行优化?
- 18. 这是由C#编译器完成的优化吗?
- 19. C++编译器会优化未使用的返回值吗?
- 20. Java编译器优化
- 21. 克++编译器的优化
- 22. 编译器优化问题
- 23. 编译器谓语优化
- 24. Requirejs优化器不编译
- 25. 二郎编译器优化
- 26. 编译器优化实现
- 27. C/C++编译器优化条件语句多少钱?
- 28. 什么是/优化C#编译器密钥的目的?
- 29. 通过子范围类型进行编译器优化
- 30. C++编译器能否自动优化float以使我翻倍?
编译器只看到一个单独的翻译单元。所以不,它不是。但链接器可以。阅读关于LTO。不管它是什么:不要做过早的优化!编写可维护的代码,不要将定义放入头文件中(除了'inline'函数,它只应该是短函数)。 – Olaf