2017-10-27 15 views
0

std::pairstd::tupleは基本的に特定のランタイムサポートを必要としないコンパイル時の構造であり、純粋にテンプレート構造を使用して実装できます(わかりやすい場合)。フリースタンディング(ベアメタル)プロジェクトでarm-none-eabi-gccでstd :: tupleを使用しますか?

、なぜそれがarm-none-eabiのC++標準ライブラリからの私のベアメタルプロジェクトのときに私は#include <tuple>、それは最終的に、これは、その後のヘッダーに達すると、それは不可能私がそれを含めるために作る、<string>を含ん<stdexcept>を含ん<array>が含まれていることですarm-none-eabi-gccに含まれていないwchar.hbits/postypes.hのようなものですか?私は間違って何をしていますか?

私は<utility>からちょうど良いものを使うことができますが、std::tupleは、私がC++標準ライブラリヘッダーを編集しなければうまくいきません。これは明らかに受け入れられません。

これは、ベアメタルプログラムがSTLの完全に正当な部分を使用するのを効果的に防止する見落としや制限ですか、それとももっと何かをやろうとしていますか?私は自分wchar.hや他のヘッダを提供する必要がありますか?

私は、これらのヘッダーの著者がここで期待しているものの説明を本当に感謝します。

+0

多くのThird-party STLの亜種がありますが、あなたが直面している正確なユースケース(「embedded stl」などのためのGoogle)を目指すものもあります。 GCCにバンドルされているSTLの亜種は、すべてのビルドで同じで、主に「通常の」マルチプロセスOSベースのアプリケーションを対象としています。 – oakad

答えて

1

Cortex-M用にコンパイルすることを前提に、以前はGCC-ARM-Embeddedと呼ばれていたARM's own GCC distributionを使用します。タプルはそこでうまく動作します。

Btw、タプルnever wasSTLの一部。あなたはおそらくC++ Standard Libraryと言うことを意図しました。

+0

さて、それをクリアすると、私が使用していたのと同じディストリビューションを指摘してからもう少し見えました。私のバージョンでは、wchar.hのような標準のCヘッダがすべて見付かりませんでした。それから、私はArchlinuxパッケージnewlibを別々に(それぞれarm-none-eabi-gccとarm-none-eabi-newlibとして)見つけました。それは今働く。ありがとう!! – Thomas

関連する問題