【问题标题】:Why would someone use C instead of C++? [duplicate]为什么有人会使用 C 而不是 C++? [复制]
【发布时间】:2010-02-24 15:05:00
【问题描述】:

可能重复:
Why artificially limit your code to C?

我从学习 C 开始,但后来直接跳入 C++,仅仅是因为它支持 OO,并且也是后续工作所必需的。然而,一些公司坚持雇佣具有特别丰富的 C 经验的人 - 我注意到这尤其适用于硬件驱动程序开发公司。

【问题讨论】:

  • 为什么有人会用刀而不是食品加工机?
  • @Neil Butterworth 酷,谢谢。
  • C 更容易实现和与遗留库“粘合”。其他语言通常也有 C 接口。一些环境也仅限于 C;例如,开发 Linux 设备驱动程序。一种更复杂的方法是可能的(一个小型​​ C 驱动程序与 C++ 甚至 Java、Python 以及任何用户模式守护程序通信),但意味着性能下降并且总是存在 C 模块。 C++ 运行时也更难开发,因此对于嵌入式设备来说,移植一些 C 编译器比移植 C++ 编译器要容易得多。
  • 请注意,您可以在 C 中以面向对象的方式进行编程。

标签: c++ c


【解决方案1】:

C 字符串处理非常不同于 C++ 典型的字符串代码。当然,我不希望我的驱动程序附近有任何 C++ 字符串!

更具体地说,在优秀的现代 C++ 中,您不必真正理解指针和处理低级别的缓冲区;但这些是设备驱动程序代码中的基本和关键技能。

是的,用 C++ 编写好的驱动程序是可能的;但是 C++ 看起来确实像带有一些额外功能的 C。大多数 C++ 库在设备领域都没有位置。

【讨论】:

    【解决方案2】:

    这可能只是因为他们没有针对他们正在使用的平台的 C++ 编译器...就我个人而言,我总是优先使用 C++ 而不是 C。

    【讨论】:

      【解决方案3】:

      C 的可移植性要高得多——在 C++ 的当前标准化水平下,当可移植性很重要时,它根本无法使用。将 C++ 代码(以可靠和可移植的方式)集成到 C 环境中也非常困难。

      【讨论】:

        【解决方案4】:

        许多嵌入式系统,例如微控制器、PLC 等,都使用 C 而不是 C++,因为它们不需要类,只是一个带有一些函数的巨大循环。没有什么花哨的,但足以用更高级的语言完成工作。由于人们对 C 语言的熟悉程度高于汇编语言,因此它在大约 98% 的情况下运行良好。

        【讨论】:

          【解决方案5】:

          我认为原因很简单,很多公司都想要高效可读的代码。 C 是一种相当容易理解和掌握的语言,对于许多用途,没有理由通过添加面向对象语言可能但可能不需要的全新概念(类、多态性、继承等)来使开发和代码连续性复杂化。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-04-30
            • 2010-11-23
            • 1970-01-01
            • 1970-01-01
            • 2013-11-16
            • 1970-01-01
            • 1970-01-01
            • 2019-12-12
            相关资源
            最近更新 更多