xbyu520 发表于 2014-3-11 13:37
看到现在。我觉得你说的在理。不同的项目难度规模,用什么工具。另外,我想知道,一个项目用 C做和C++做。 ...
这几天没上网,没有及时回复。
我是写单片机程序的,上位机也写,但很少,大多数是一些界面类简单的接口程序,主要是利用上位机强大的存储、计算、显示能力来调试下位机,用 VB、VC 写了一些简单的程序。
个人觉得,程序量比较小,如 2K 以下的程序,用汇编更适合一些,它短小精练,可以用一些不太符合 C 精神的处理方式,使程序极为高效,有些单片机,如飞凌,汇编几乎是唯一的选择,回为根本没有与之配套的 C 编译程序。
大于 2K 而小于 64K 用 C 更适合一些,具体为什么,看一下网上汇编和 C 的争论就知道了。还是那句话,它们谁也代替不了谁,一种语言的长处就是另外一个的短处,其实它们是互补的,而非互斥的,作为一个单片机程序员,应该两都会,具体会到什么程度,取决于你的工作。个人觉得,在可能的情况下尽量用 C,如果在资源有限的应用中,汇编是不二之选。最后别忘了,任何一种处理器,小到 1 位单片机,大至巨型机,可能没有 C 编译器支持它,但一定会有一套汇编指令集支持它。
C++ 之比于 C,就如同 C 比于汇编一样,虽然更高级,但离硬件也更远。
C++ 更适合需要处理大量数据的应用中,当然,它占用的程序空间也会比较大。数据量大了,采集、处理、传输、保存、调取这些数据的程序(函数)随之也多了,多到你怕的程度,生怕修改了一个地方,会造成其它地方和隐患。而 C++ 良好的封装性,使得数据和它和处理函数被“固定”在一起,实际上,也就是更“模块”化一些。
至于维护,肯定是 C++ 更好,但 C++ 的开销太大,小容量的单片机是承受不起的。当然,如果你把 ARM 也当单片机来理解的话,C++ 可能就是它的用武之地。
最后还是那句话,C++ 和 C 谁也代替不了谁,因为它们各自作战的阵地重合的都没有 C 和汇编多。 |