【发布时间】:2013-02-06 23:31:53
【问题描述】:
在 C++98 标准下编写的代码能否与较新的编译器一起使用,例如 g++。或者它不会工作。假设简单的“Hello World”程序可以工作,但是复杂的命令行程序呢?
【问题讨论】:
-
请阅读 C++03 和 C++11 标准末尾的不兼容列表以获取详尽列表。
-
标准委员会对于破坏与现有代码的兼容性非常保守,所以这应该不是主要问题。
-
一般,没有。例如:
int main() { auto int x = 0; }在 C++11 之前是有效的,因为 auto 充当存储类说明符,但由于没有人实际使用它,因此已将其删除。 (并且auto关键字已被重新用于进行类型推断。)如果您的代码确实确实使用了它,它会中断。 -
简短的回答是旧代码几乎适用于所有情况。如果你足够努力,你可以发明一些会破坏的东西,但即使你在尝试,也不是很容易想出很多,而且你做的少数不太可能在真正的代码中发生。
-
我经常听到的一句话是,大多数破坏性更改都具有“应该被破坏”的味道。所以即使它确实坏了,修复它也会让你的代码更好:-)