埋め込まれた 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
。