假设我有两个翻译单元,它们都使用std::string
. 我用 编译其中一个,-O3
另一个没有优化,然后将结果链接在一起。两个目标文件都将包含 instantiated std::string
,但我希望一个版本可以使用优化进行编译,而另一个则没有。链接器会在链接期间只选择其中一个吗?如果有,是哪一个?生成的可执行文件能否保证始终正常运行?
更新:由于这看起来是特定于实现的,因此将其缩小到 gcc 和 clang 行为是有意义的,因为它们都实现了定义明确且具体的 Itanium ABI,而不是试图从C++ 标准本身。