0

埋め込まれた STM32 Keil プロジェクト内で gsl を使用しようとしています。私の Keil プロジェクトでは、せいぜい時代遅れのセミ C++11 コンパイラしか使用していません。(これは、LoRaWAN 用の ST ライブラリによって私に課せられた制約です)。keil にバンドルされている V5.06 update 6 (ビルド 750) ARM コンパイラを使用しています。Keil はstd::aray、STL の を実装しないことを選択しました。私はこれについて非常に失望していますが、私にできることはありますか.

gsl-Liteを使用することにしました。互換性C++98があるはずです。C++03必要ありませんstd::arrayが、インクルード パスに含まれるライブラリを使用してコードをコンパイルしようとすると、次のビルド メッセージが表示されます。

..\Core\inc\gsl/gsl-lite.hpp(405): エラー: #5: ソース入力ファイル "array" を開けません: そのようなファイルまたはディレクトリはありません
# include <array>

しかし、404 行目は次のコードで始まります。

#if gsl_HAVE( ARRAY )
# include <array>
#endif

<array>含めることができるかどうかを判断しようとしているようです。私のエディタは、このブロックが定義されていないかのようにグレー表示します。

gsl_HAVE と定義されている:

#define gsl_HAVE(             feature )  ( gsl_HAVE_##feature )

ARRAYこれがどのように機能し、適切に定義されていないかどうかを確認する方法がわかりません。

<array>私のコードが gsl-lite をビルドして使用できるように、含めたくありません。私の好みのオプションは、定義のあるものです。

アップデート

インクルードシステムを理解している限り:

#define gsl_HAVE_ARRAY                  gsl_CPP11_110

gsl_HAVE_ARRAY次の場合に機能 (この場合)を自動的に除外するように定義されています。

#define gsl_CPP11_OR_GREATER  ( gsl_CPLUSPLUS >= 201103L )

true と評価されます。gsl_CPLUSPLUSと定義されている

#  define gsl_CPLUSPLUS  __cplusplus

しかし、私は の値を理解できないようです__cplusplus

4

1 に答える 1