我正在撰写一个方案,更具体地说,是一套嵌入式系统的一个箱子。 我将利用一个C图书馆与一些硬件部分进行互动,我选择在C或C++编写。 我是否应该选择一个理由? 我不需要C++的面向目标的特点,但它确实有更强大的类型系统。 是否还有其他语言特点使该方案更加有力? 我知道一些人避开了C++,因为它能够(但并不总是)产生大量的企业形象。
这是一个特别直截了当的问题。 它取决于若干因素,包括:
- How you prefer to layout your code.
- Whether there s a C++ compiler available for your target (and any other targets you may wish to use the bootloader on).
- How critical the code size is for your application (we re talking about 10% extra maybe, not MB as suggested by another answer).
在个人方面,我确实喜欢课堂,作为制定我守则的一种方式。 即便在撰写C码时,我也倾向于在模块式文档中保留所有内容,并具有“模拟”成员职能和(少数)文档范围静态变量,以“模拟”成员变量。 尽管如此,我现有的大多数嵌入项目(所有这些项目规模相对较小,最多可达128kB闪光,包括载荷,但通常较少)都倾向于在C. 现在,我有一个C++汇编员,但我肯定会考虑转到C++。
仅仅使用参考资料、超负荷和模板对C++有很大好处,即使你不上班。 当然,我不再使用许多更先进的特征,包括使用动态记忆分配(新)。 之后,我再次避免了根植的C中的动态记忆分配(小型等)。
如果你有一张C++汇编器(即使只有g++),那么就应该通过它操作你的代码,而只是为了进行额外的类型核对,以便你能够减少贵国法典中的问题。 C++汇编者可以接手一些甚至静态分析工具都赢得点。
关于许多无效原因的良好讨论,人们拒绝接受C++,见。 Dan Saks article on Embedded.com.
单载荷的明显选择是C,特别是嵌入式系统。 生成的法典必须接近金属,而且很容易分解,可能的话是放弃组装,而如果C++没有照顾,则会很快变得困难。 另外,C件工具链远比C++工具链更普遍,使你的箱子能够在更多的平台上使用。 最后,生成的双像一般较小,在书写C风格时使用较少记忆。
如果你不需要使用目标定向,则使用C.简单的选择。 在完成同样任务的同时,它更简单、更容易。
有些死难者会不同意,但联络处是C++ >C,在很多情况下是这样。
除非有具体理由使用C++,否则我将使用C。 对于那些装满载体来说,你并不真正需要办公室。
利用完成这项工作的最简单工具。
C级的写作程序与C++的写作程序并不相同。 如果你知道如何在C++中做到这一点,那么你的选择是C++。 写作亭载荷最好能尽量减少代码,因此,你可能不得不放弃标准C++图书馆。 如果你知道如何在C中写字,那么你就应该使用C,那么,这种任务就更加常见。
以往的大多数答复认为,你的舱载荷是小的,很简单,通常就是这样;但是,如果变得更加复杂(即,你需要能够从一个超网港口、一个USB港口或一个序列港口装载,......你需要验证在你放弃现行法典之前装满的代码,等等)。
我也发现,boot子和申请通常具有一定数量的共同编码,因此,你可能也希望考虑使用与你的申请相同的语文,以促进守则的共享。
C 语言比C++大为方便。 这意味着一个既有效的C级方案,又有效的C++将更快地汇编为一个C级方案。 也许这不是一个主要关切,而只是造成C++可能超高技能的另一个原因。
与C++并混淆了你所需要的语言。 只要了解你重新使用的C++摘要,你仍然完全控制产出标码。
如果你避免使用虚拟功能,则使用联络处仍然会很成功。 避免需要大量复制的不可改变的物体类型,以便通过价值,例如: 但是,你仍然能够使用模板等特征,而不会对运行时间的业绩产生任何实际影响。
http://strong>C。 这将使你的法典更加简单,减少其足迹。 可查阅:。
- winforms
- combobox
- fogbugz
- java
- date
- internationalization
- asp.net
- iis
- url-rewriting
- urlrewriter
- c#
- enums
- ocaml
- haxe
- algorithm
- string
- viewstate
- .net
- c++
- c
- symbol-table
- mysql
- database
- postgresql
- licensing
- migration
- vb.net
- vb6
- declaration
- vb6-migration
- python
- psycopg2
- backup
- vmware
- virtualization
- gnu-screen
- authentication
- desktop
- excel
- xll
- cultureinfo
- regioninfo
- oracle
- client
- session
- download
- html
- virtual
- constructor
- scenarios
- perl
- full-text-search
- javascript
- ajax
- testing
- oop
- inheritance
- vim
- encapsulation
- information-hiding