c – 大型嵌入式公司是否“被迫”使用旧的编程标准/编译器?

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

我知道这是因为人们可以学习“真正的”C或C,无论他们选择哪一种,并且在没有任何新语言功能帮助的情况下运用这项技能(我不同意,但我应该争辩).

在向我的讲师询问他为什么回答这个规则时(在知道我对上述答案不满意之后):“因为像嵌入式设备一样的ASML这样的老公司有旧的代码库,在切换到C11 / C时可能会破坏它们11).

我要求一个代码的特定现实世界/实际例子,它在C99 / C11(或C 98 / C 11)中编译,符合标准(C99 / C 98),但在二进制形式时行为非常不同 – 总结一下,问题没有得到解答.如果公司坚持旧编译器和标准的说法是正确的,那么有人可以提供我想要为自己看到的这样一段代码吗?

最佳答案
我不太了解嵌入式世界,但有一些其他公司使用c并拥有旧的硬件/平台

这实际上取决于他们使用的公司和平台.但是,通过一些努力和开放式管理,应该没有任何地方反对现代化的c(从技术角度来看)

在几家公司,我知道开发商鼓励他们转向现代化,他们的行动越来越多.

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

因此,由于保守的管理或开发人员不关心现代c,可能有些公司坚持旧c.还有越来越多的公司升级.学习现代c也没有错,因为在使用现代c的公司中通常不鼓励“旧”风格.

代码可能会在切换编译器时“中断”,但仅限于编译级别,因为它们使用非标准功能/语法(一些较旧的编译器更容忍).但行为明智我不知道“默默地”打破的事情(标准委员会正在积极尝试通过每次更改来避免这种情况)并且您也可以通过更好的编译器获得更多更好的警告.

转载注明原文:c – 大型嵌入式公司是否“被迫”使用旧的编程标准/编译器? - 代码日志