c++ - 使用 -std=c++11 会破坏二进制兼容性吗?

标签 c++ c++11 g++

我一直在努力寻找这个问题 - 这似乎是一个显而易见的问题 - 但我还没有找到它:Is a module compiled with "-std=c++11"(g++) binary compatible with modules that没有编译选项? (也就是说,我可以安全地将它们链接在一起吗?)两种编译都将使用完全相同的 g++ 版本。

更准确地说,使用gcc 4.9.0,我是否可以只在特定的编译单元上使用“-std=c++11”,然后让其他编译器在没有选项的情况下进行编译。

最佳答案

权威引用可以在gcc的C++11 ABI Compatibility中找到页面。

简短的总结是:ABI 损坏不是语言原因,而是有许多强制更改导致随 gcc 一起提供的标准 C++ 库发生更改。

关于c++ - 使用 -std=c++11 会破坏二进制兼容性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23874393/

相关文章:

c++ - 在文件 C++ 中写入和读取结构的 3d vector

c++ - unordered_map 判断key是否在map中

c++ - wcin.imbue 和 UTF-8

C++ 基模板类虚方法没有出现在派生中?

c++ - 部分模板特化和 icc

c++ - 自动和复制构造函数 : what's wrong?

c++ - 在 C++ 程序中添加不必要的大括号 { } 会减慢它的速度吗?

c++ - 解析其他命名集的多个命名集

c++ - 可以为多个构造函数消除 0 (NULL) 的歧义吗?和赋值运算符?

c++ - 没有模板左值不匹配(&&),但有模板匹配(T &&)?