我正在开发一个用于嵌入式系统的软件库,如ARM芯片或TI DSP (主要用于嵌入式系统,但如果它也可以在PC环境中使用就更好了)。显然,这是一个相当广泛的目标系统,所以能够很容易地移植到不同的系统是一个priority.The库,将用于与特定的硬件接口和运行一些算法。
我认为与C相比,C++是最好的选择,因为它更容易维护和阅读。我认为额外的开销是值得的,因为它能够在面向对象的范例中工作。如果我是为一个非常特定的系统编写代码,我会用C语言编写,但事实并非如此。
我假设现在大多数流行的嵌入式系统的编译器都可以处理C++。这是正确的吗?
还有其他我应该考虑的因素吗?我的思路正确吗?
发布于 2010-01-15 00:01:10
如果可移植性对您来说非常重要,特别是在嵌入式系统上,那么C当然是比C++更好的选择。虽然嵌入式平台上的C++编译器正在迎头赶上,但C的广泛使用根本无法与之匹敌,任何有自尊的平台都有一个兼容的编译器。
此外,我不认为C在硬件接口方面比C++差。抽象量足够低(即没有深层的类层次结构),使C成为一个很好的选择。
发布于 2010-01-15 00:23:08
当然,C++对ARM有很好的支持。ARM有自己的编译器,g++也可以生成符合EABI的ARM代码。当涉及到DSP时,您将不得不查看它们的工具链来决定您要做什么。请注意,数字信号处理器附带的库可能无法实现完整的C或C++标准库。
SymbianOS内核使用C++进行底层的嵌入式开发。话虽如此,你应该让事情尽可能简单。
发布于 2010-01-15 01:37:12
我见过很多人抱怨C++“臃肿”,不适合嵌入式系统。
然而,在接受Stroustrup和Sutter的采访时,Bjarne Stroustrup提到,他曾看到大量模板化的C++代码进入宝马的刹车系统以及战斗机的导弹制导系统。
我从中得到的结论是,该语言的专家可以用C++生成非常适合嵌入式系统的复杂、高效的代码。然而,一个"C With Classes"1程序员如果不了解这种语言,就会生成不合适的臃肿的代码。
问题一如既往地归结为:您的团队可以用哪种语言交付最好的产品?
1我知道这听起来有点贬义,但我要说,我认识很多这样的人,他们粗制滥造出大量相对简单的代码来完成这项工作。
https://stackoverflow.com/questions/2065456
复制相似问题