首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >开发嵌入式软件库,是C还是C++?

开发嵌入式软件库,是C还是C++?
EN

Stack Overflow用户
提问于 2010-01-14 23:59:21
回答 8查看 3.2K关注 0票数 5

我正在开发一个用于嵌入式系统的软件库,如ARM芯片或TI DSP (主要用于嵌入式系统,但如果它也可以在PC环境中使用就更好了)。显然,这是一个相当广泛的目标系统,所以能够很容易地移植到不同的系统是一个priority.The库,将用于与特定的硬件接口和运行一些算法。

我认为与C相比,C++是最好的选择,因为它更容易维护和阅读。我认为额外的开销是值得的,因为它能够在面向对象的范例中工作。如果我是为一个非常特定的系统编写代码,我会用C语言编写,但事实并非如此。

我假设现在大多数流行的嵌入式系统的编译器都可以处理C++。这是正确的吗?

还有其他我应该考虑的因素吗?我的思路正确吗?

EN

回答 8

Stack Overflow用户

发布于 2010-01-15 00:01:10

如果可移植性对您来说非常重要,特别是在嵌入式系统上,那么C当然是比C++更好的选择。虽然嵌入式平台上的C++编译器正在迎头赶上,但C的广泛使用根本无法与之匹敌,任何有自尊的平台都有一个兼容的编译器。

此外,我不认为C在硬件接口方面比C++差。抽象量足够低(即没有深层的类层次结构),使C成为一个很好的选择。

票数 9
EN

Stack Overflow用户

发布于 2010-01-15 00:23:08

当然,C++对ARM有很好的支持。ARM有自己的编译器,g++也可以生成符合EABI的ARM代码。当涉及到DSP时,您将不得不查看它们的工具链来决定您要做什么。请注意,数字信号处理器附带的库可能无法实现完整的C或C++标准库。

SymbianOS内核使用C++进行底层的嵌入式开发。话虽如此,你应该让事情尽可能简单。

  • 避免需要比现有库支持更多的库支持的异常(因此使用新的(std::nothrow) Foo而不是新的Foo)。
  • 尽可能避免内存分配,并尽可能早地进行内存分配。
  • 避免复杂的模式。
  • 注意,模板可能会使代码变得臃肿。
票数 7
EN

Stack Overflow用户

发布于 2010-01-15 01:37:12

我见过很多人抱怨C++“臃肿”,不适合嵌入式系统。

然而,在接受Stroustrup和Sutter的采访时,Bjarne Stroustrup提到,他曾看到大量模板化的C++代码进入宝马的刹车系统以及战斗机的导弹制导系统。

我从中得到的结论是,该语言的专家可以用C++生成非常适合嵌入式系统的复杂、高效的代码。然而,一个"C With Classes"1程序员如果不了解这种语言,就会生成不合适的臃肿的代码。

问题一如既往地归结为:您的团队可以用哪种语言交付最好的产品?

1我知道这听起来有点贬义,但我要说,我认识很多这样的人,他们粗制滥造出大量相对简单的代码来完成这项工作。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2065456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档