单片机该不该用C++?

目前写个不算小的工程,用到了七八种传感器,还跑复杂的算法,发现驱动用C写,后期扩展起来挺费劲的。但目前主流单片机都是用C语言写,于是有了这个问题——单片机该不该用C++写。

我想,Quora上大佬的回答Why can't C++ replace C in embedded systems? 应该还是可靠的吧。

个人的总结如下,待时间去检验它的正确性吧:

  • CPU速率大于100MHz不用考虑C++降低速率问题。现在都有说用Python来写单片机程序的了,C++还怕什么。当软没达到这个频率的CPU也可以考虑。
  • Flash大于100K,只要不用RTTI, STL库,而是乖乖用C++中类和常量等基本语法,Flash应该Hold得住。在这个条件用,使用穿插使用C的String.h中的标准函数(除scanf这样的输入函数),大个10KB~20KB吧。
  • 没有很大的向下兼容的需求,如原先在高性能32位MCU上跑,后面要移植到8位MCU这样的问题。
  • 没有换编译器的需求,毕竟C++11、C++14和C++17还是有不小区别的。

C++一个无法逃避的问题是:

But mind you, writing complex code in C can give you nightmares.

But then debugging C++ code can give you nightmares as well.

如果实在不没有用C++的空间,那至少用个C98吧,都过去二十多年了!

你可能感兴趣的:(嵌入式)