首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌入式环境下的STL

问嵌入式环境下的STL
EN

Stack Overflow用户
提问于 2010-10-04 07:35:21
回答 11查看 4.6K关注 0票数 10

我是一名C++程序员,多年来一直有人认为STL在嵌入式环境中不是很好的,因此通常被禁止用于基于嵌入式环境的项目。我相信STL库的功能要强大得多,并且提供了一种更快、更容易出错的开发方法(当然语法不太可怕,但我曾经认为它是一个真正的宝藏).Also,我认为STL很重,并且增加了代码的最终足迹,因为它是模板化的,因为它只会得到他所要求的可编译代码,而不是整个STL。

我的问题是,为什么会出现这种民粹主义(至少是我周围的大多数人都这么认为)的概念,称为STL是,而不是嵌入式环境的?

我确实看到了一个类似的问题,但在这里,我希望能在这里帮助指出STL和嵌入式环境的总体利弊。

编辑:因此,在这里,我将把答复加在一起:

  1. 可移植性问题
  2. 如何应对STL集装箱的巨大动力分配
  3. STL很难调试
  4. STL中的深函数调用导致编译器性能低下,编译器的内联能力很弱(函子的功能没有用!)
EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2010-10-04 07:45:07

在嵌入式系统或小型系统中,STL存在很多问题(如EASTL这里所描述的),主要问题通常是它管理(its)内存的方式。PSP水瓶港就是一个很好的例子。

不过,我的建议是第一次测试,在遵循假设之前,如果测试显示您使用了过多的空间/处理器周期,那么也许一两个优化就可以将其推入“可用”的范围。

最后,boost是基于模板的,所以如果您查看生成的模板代码的大小,它将受到与STL相同的影响。

编辑/更新:

来澄清我的最后一句话(这只是为了提高对STL的支持)。在C中,您可以(Ab)使用相同的代码在共享相同的头(或布局)的不同结构上完成相同的工作,但是对于模板,每种类型都可能得到自己的副本(我从未测试过任何编译器是否足够聪明,如果封装了“优化大小”),即使它与刚刚生成的编译器完全相同(在机器/程序集级别上)。boost的优点是阅读起来要干净得多,而且里面塞满了更多的东西,但这可能会导致编译时间过长,这是因为copius数量(有时是巨大的)头。STL获得好处是因为您可以传递您的项目,而不需要下载/添加boost。

票数 9
EN

Stack Overflow用户

发布于 2010-10-04 07:44:11

这取决于你所说的嵌入是什么意思。在Atmel8系统中,有很小的内存。太少了,你不可能有一个合理的麦高乐。在本例中,您希望非常显式地管理内存,可能需要使用所需类型的静态数组。如果您已经做到了这一点,您基本上不需要大部分的STL。

在手臂系统上,你有足够的内存。使用STL!

票数 8
EN

Stack Overflow用户

发布于 2010-10-04 08:03:35

我偶然看到了这样的演示:嵌入式系统编程的标准C++

模板的大部分复杂性在于编译器,而不是运行时系统,这在一定程度上是问题所在--我们不确定编译器能够完成多大的优化。事实上,基于STL的C++代码应该比不使用模板甚至C代码的C++代码更紧凑、更快!

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

https://stackoverflow.com/questions/3853382

复制
相关文章

相似问题

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