我知道原则上这可能是未定义的行为,但为了处理大型项目,这是我关于 GCC 的问题:
假设我使用完全相同的编译器安装编译一个转换单元gcc -std=c++98
和另一个转换单元。-std=c++11
是否有任何保证可以链接两个目标文件并获得定义明确的程序?
据我所知,由于宏的不同,潜在的问题只能来自库头的不同视图,而这些反过来最多只会向标准库类添加新的成员函数,但绝不会添加成员对象。
这会以某种方式使编译具有不同语言方言选项的大型项目的不同部分变得可以接受吗?
更新:我应该添加一个正交问题:如何使用两个不同版本的 GCC(比如 4.3 和 4.6),但是使用相同的方言选项(-std=c++98
)?此 GCC 文档中的列表似乎表明该库在 4.2.2 和 4.6 之间的两个方向上都兼容。