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

Does using -std=c++11 break binary compatibility?

本文关键字:二进制 兼容性 -std c++11 使用      更新时间:2023-10-16

我一直在努力寻找这个问题-这似乎是一个显而易见的问题-但我还没有找到它:用"-std=c++11" (g++)二进制编译的模块是否与不使用该选项编译的模块兼容?(也就是说,我能把它们安全地连接在一起吗?)两个编译将使用完全相同的g++版本。

更准确地说,使用gcc 4.9.0时,我可以只在特定的编译单元上使用"-std=c++11",然后让其他编译单元在没有该选项的情况下进行编译吗?

可以在gcc的c++ 11 ABI兼容性页面中找到权威参考。

简短的总结是:没有语言原因导致ABI被破坏,但是有一些强制的更改导致了gcc附带的标准c++库的更改。