Closed. This question is opinion-based。它当前不接受答案。












想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。

4年前关闭。



Improve this question




我们的讲师告诉我们,在完成作业时,我们只允许使用C++ 98/C99标准,通过为编译器指定正确的标志,我们可以确保我们不会违反此规则。

我知道,这样一来,人们可以学习“真实的” C或C++,无论他们选择哪种语言,都可以在没有新语言功能任何帮助的情况下锻炼该技能(我不同意,但我要争论谁)。

当问我的讲师为什么要遵循此规则时,他回答了(在得知我对上述答案不满意之后):“因为像ASML这样的大型老公司可以与嵌入式设备一起使用,所以它们的旧代码库在切换到C11/C时可能会中断。++ 11)。

我要求提供一个特定的真实世界/实用的代码示例,该代码可以在C99/C11(或C++ 98/C++ 11)中进行编译,并且符合标准(C99/C++ 98),但是在行为上二进制形式的情况大不相同-综上所述,该问题尚未得到回答。如果公司坚持使用旧的编译器和标准的说法是正确的,那么有人可以提供我自己想看的代码吗?

最佳答案

我对嵌入式世界了解不多,但是其他一些使用c++并拥有旧硬件/平台的公司

这实际上取决于公司及其使用的平台。但是,通过一些努力和开放的管理,应该不反对在任何地方都拥有现代c++(从技术角度而言)

在几家公司中,我知道开发人员会鼓励向现代c++的迁移,而且他们正在越来越多地迁移。

有时您需要付出更多的努力,而不是“仅仅”安装新的编译器。当您需要交付到旧平台(例如Debian 6)并且无法更改操作系统时,您必须在该平台上手动编译libstdc++并将其与您的产品一起交付/使用特定的产品(有更多详细信息,但是您会得到点)。

因此,尽管有些公司可能由于保守的管理或开发人员不关心现代c++而坚持使用旧的c++。也有越来越多的公司升级。学习现代c++也是而不是,因为在使用现代c++的公司中通常不鼓励使用“旧”样式。

当他们切换编译器时,代码可能会“中断”,但只能在编译级别上,因为它们使用了非标准的功能/语法(某些较旧的编译器更能容忍)。但是从行为的角度来看,我不知道会“无声地”中断某些事情(标准委员会正在积极尝试避免每次更改都发生这种情况),并且使用更好的编译器还会收到越来越多的警告。

09-30 14:45
查看更多