首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌入式Linux下的C与C++

问嵌入式Linux下的C与C++
EN

Stack Overflow用户
提问于 2011-03-01 03:37:59
回答 8查看 6.8K关注 0票数 14

我正在为嵌入式Linux (ARM)开发一个应用程序。它将执行500次/秒,因此速度很重要。我更喜欢使用C++,但我担心它会比C慢,即使我避免使用虚拟函数等花哨的功能。有没有使用C语言的理由,或者用C++编写也一样好?

EN

回答 8

Stack Overflow用户

发布于 2011-03-01 03:39:53

C++通常不会遭受C-的运行时损失(除了像RTTI这样的少数东西)。

除了少数奇怪的情况外,编译器应该能够确定在编译时调用哪个虚拟函数,因此不会增加任何开销。

编辑:好的,有这么多的编译器,CPU,运行库,OSes,C++的一些功能可能会创建较慢的代码,有一些功能可能会创建更快的代码。

但是我们是否都同意C++不再被自动排除在嵌入式使用之外?

票数 17
EN

Stack Overflow用户

发布于 2011-03-02 01:42:25

在C++中,模板元编程可以在编译时解决C或任何其他过程性编程语言在运行时必须处理的几种情况。

我应该说更多。模板元编程和一些类继承技巧真的很棒。它可以为你节省大量的处理时间,而不是通过“如果”和“切换”。

这意味着如果使用得当,C++实际上可以比C更快。

显然,您可以使用C++编写“C语言”程序,并且根本不会有任何损失。如果你不太喜欢C++,我建议你做一个"C on C++“或者"C with C++ extensions”,只是为了利用C++改进的优势,但你真正的优势是用C++的方式编程。在那里,你会看到C++是,大部分时间,或者比C更快或者更干净,或者至少和一样快。

不要害怕。面对C++。在stdc++之后(相对于libc),代码大小几乎不会有任何开销。如果您的应用程序是从中等大小到高大小,它将被稀释。

我使用C++,从简单的8位ATmega到Marvell的ARM9,通过AVR32 UC3和Cortex-M3,总是发现它是有利可图的。

如果您在特定情况下需要特定的建议,请随时询问。

票数 8
EN

Stack Overflow用户

发布于 2011-03-01 03:53:45

选择C而不是C++的主要原因是编译的二进制文件的大小,这对于嵌入式系统来说可能是一个真正的限制。

在性能上,如果您正确使用语言,则没有可测量的差异。您可以像编写慢C++一样轻松地编写慢C代码,只要您知道您正在编写的代码的底层机制,您应该对这两种代码都没有意见。

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

https://stackoverflow.com/questions/5146710

复制
相关文章

相似问题

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