首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用合适的工具:嵌入式编程

问使用合适的工具:嵌入式编程
EN

Stack Overflow用户
提问于 2010-05-18 17:19:37
回答 8查看 4.3K关注 0票数 17

我对适合嵌入式编程的编程语言很感兴趣。特别是:

在C++中编写嵌入式系统是可能的吗?或者使用纯C更好?或者,只有当语言的某些特性(例如,C++、异常和模板)被排除在外时,它才是OK的?

这个领域的Java又如何呢?

谢谢。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-05-19 04:11:14

可以在C++中编写嵌入式系统吗?

是的,当然,即使在8位系统上也是如此。C++的运行时初始化要求与C略有不同,即在调用main()之前,必须调用任何静态对象的构造函数。这方面的开销(不包括在您控制范围内的构造函数本身)是很小的,尽管您必须小心,因为构造的顺序没有定义。

使用C++,您只需为所使用的内容付费(而且许多有用的内容可能是免费的)。也就是说,例如,一段也是C++可编译的C代码在编译为C++时通常不需要更多的内存,执行速度也不会比编译为C时慢。C++的一些元素可能需要小心使用,但大多数最有用的功能几乎没有成本,而且有很大的好处。

还是使用纯C更好?

有可能,在某些情况下。一些较小的8位甚至16位目标没有C++编译器(或者至少没有任何知名的编译器),如果这是一个问题,使用C代码将提供更好的可移植性。此外,在资源严重受限的小型应用程序目标上,C++比C带来的好处微乎其微。C++中的额外特性(主要是那些支持OOP的特性)使其适用于相对大型和复杂的软件构造。

还是C++只有在语言的某些特性(例如,RTTI、异常和模板)被排除的情况下才可以?

可以接受的语言特性完全取决于目标和应用程序。如果你是内存受限的,你可能会避免昂贵的特性或库,即使这样,也可能取决于你缺少的是代码还是数据空间(在目标上,它们是分开的)。如果应用程序是hard real-time,您应该避免那些不确定的特性和库类。

一般来说,我建议如果你的目标是32位,总是优先使用C++而不是C,然后削减你的C++以适应内存和性能的限制。对于较小的部件,在选择C++时要谨慎一点,尽管不要完全打折扣;它可以让生活变得更容易。

如果您选择使用C++,请确保您有良好的支持C++的调试器硬件/软件。在C++中构建复杂软件相对容易,这使得一个像样的调试器变得更有价值。并不是嵌入式领域中的所有工具都能识别或支持C++。

我总是建议在Embedded.com上挖掘任何嵌入式主题的档案,它有丰富的文章,包括一些仅此问题,包括:

关于Java,我不是专家,但它有显著的运行时要求,这使得它不适合资源受限的系统。您可能会将自己限制在使用Java的相对昂贵的硬件上。它主要优点是平台无关性,但可移植性不能扩展到不支持Java的平台(其中有很多),因此它的可移植性可以说比具有抽象硬件接口的设计良好的C或C++实现要低。

编辑顺便说一下,我刚刚在TechOnline时事通讯中收到了这篇文章:Using C++ Efficiently in Embedded Applications

票数 27
EN

Stack Overflow用户

发布于 2010-05-18 17:24:58

在嵌入式系统中,您所使用的编程语言通常由实际可用的编译器决定。

如果你的硬件只有一个C编译器,那就是你要用到的。如果它有一个不错的C++编译器,那么就没有理由比C++更喜欢C语言了。

我敢说,在嵌入式系统中,Java不是一个非常流行的选择。

票数 9
EN

Stack Overflow用户

发布于 2010-05-18 17:27:24

如今,嵌入式编程跨越了广泛的应用领域。

粗略地说,它从传感器/开关到完整的安全系统。

你应该把你的语言建立在复杂性和硬件资源的基础上。

它是硬件(CPU,...)、操作系统、协议、...

可能的选择:

python assembler

  • router-like交换机:python设备:C和/或C++

  • 手持设备: Java或QT/C++

  • complete系统:C和/或C++与python

的组合

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

https://stackoverflow.com/questions/2855884

复制
相关文章

相似问题

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