【发布时间】:2012-05-29 20:00:48
【问题描述】:
我知道原则上这可能是未定义的行为,但为了处理大型项目,这是我关于 GCC 的问题:
假设我用gcc -std=c++98 编译一个事务单元,用-std=c++11 编译另一个事务单元,使用完全相同的编译器安装。是否有任何保证可以链接两个目标文件并获得定义明确的程序?
据我所知,由于宏的不同,潜在的问题只能来自库头的不同视图,而那些反过来最多添加新的成员函数,但绝不是成员对象,到标准库类。
这是否会让使用不同语言方言选项编译大型项目的不同部分变得可以接受?
更新:我应该添加一个正交问题:如果使用两个 不同 版本的 GCC(比如 4.3 和 4.6),但 相同 em> 方言选项 (-std=c++98)?清单in this GCC documentation 似乎表明该库在 4.2.2 和 4.6 之间双向兼容。
【问题讨论】:
标签: c++ gcc linker undefined-behavior dialect