在独立(裸机)项目中使用带有arm-none-eabi-gcc的std :: tuple?

时间:2017-10-27 02:05:42

标签: c++ bare-metal

据我了解,std::pairstd::tuple基本上是编译时构造,不需要任何特定的运行时支持,并且可以纯粹使用模板构造实现(如果混乱)。

那么为什么当我#include <tuple>来自arm-none-eabi的C ++标准库的裸机项目时,它包括<array>,其中包含<stdexcept>,最后包含<string> {1}},使我无法将其包含在内,然后进入不包含在arm-none-eabi-gcc中的wchar.hbits/postypes.h这样的标题中?我做错了什么?

我可以std::pair使用<utility>std::tuple如果没有我编辑C ++标准库标题来删除有问题的包含就行不行,这显然是不可接受的。< / p>

这是一种监督或限制,有效地防止裸机程序使用STL的完全合法部分,或者我应该在这里做更多的事情?我是否需要提供我自己的wchar.h和其他标题??

我非常感谢这些标题的作者在这里所期待的解释。

1 个答案:

答案 0 :(得分:1)

假设您要为Cortex-M进行编译,请使用ARM's own GCC distribution,以前称为GCC-ARM-Embedded。元组在那里工作得很好。

顺便说一句,never wasSTL部分。你可能想说C++ Standard Library