c++ - 大型嵌入式公司真的是 "forced"使用旧的编程标准/编译器吗?

标签 c++ c embedded standards policy

<分区>

我们的讲师告诉我们,在完成作业时,我们只能使用 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++ 的公司中通常不鼓励使用“旧”风格。


当他们切换编译器时,代码可能会“中断”,但仅限于编译级别,因为它们使用了非标准的功能/语法(一些较旧的编译器更能容忍)。但在行为方面,我不知道有什么东西会“悄悄地”破坏(标准委员会正在积极尝试通过每次更改避免这种情况),并且您还会通过更好的编译器获得更多更好的警告。

关于c++ - 大型嵌入式公司真的是 "forced"使用旧的编程标准/编译器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40105454/

相关文章:

c++ - 为什么我的 PIC 的 LED 不闪烁?

embedded - uboot-uart.bin 和 uboot.bin 之间的区别?

c++ - 在这种情况下,我可以避免带有主体的纯虚函数吗

c++ - 有人曾经将 boost::singleton 与 boost::logger 一起使用过吗?

c - 被 C 语法困住了

c++ - 我能保证Lua堆栈的大小吗?

c++ - 如何在控制台应用程序的 mini2440 屏幕上打印我的应用程序的输出?

c++ - 使用来自另一个类 SFML c++ 的函数时,Sprite 不会移动

c++ - 如何理解棘手的加速

c++ - 在 c/c++ 中编辑从 stdin 打印在 stdout 上的文本