Я пытаюсь использовать gsl внутри моего встроенного проекта STM32 Keil. В моем проекте Keil самое большее используется устаревший полу с ++ 11 компилятор. (Это ограничение наложено на меня моей библиотекой ST для LoRaWAN). Я использую V5.06 обновление 6 (сборка 750) ARM Compiler в комплекте с keil. Кейл решил не реализовывать std::aray
STL. Я очень разочарован этим, но эй ват, я могу сделать.
Я выбрал gsl-Lite . Он должен быть совместим с C++98
и C++03
. Так что std::array
не требуется, но когда я пытаюсь скомпилировать мой код с библиотекой, включенной в мой путь включения, я получаю это сообщение сборки:
.. \ Core \ inc \ gsl / gsl-lite.hpp (405): ошибка: # 5: не удается открыть исходный входной файл "массив": такого файла или каталога нет
# include <array>
Но строка 404 начинается с этого фрагмента кода:
#if gsl_HAVE( ARRAY )
# include <array>
#endif
Мне кажется, они пытаются определить, можно ли включить <array>
. Мой редактор скрывает этот блок, как будто он не был определен.
gsl_HAVE
определяется как:
#define gsl_HAVE( feature ) ( gsl_HAVE_##feature )
Я не понимаю, как это работает и как я могу проверить, правильно ли был определен ARRAY
.
Я не хочу включать <array>
, чтобы мой код мог собирать и использовать gsl-lite. Мой предпочтительный вариант - это что-то с определением.
обновление
Насколько я понимаю, система include:
#define gsl_HAVE_ARRAY gsl_CPP11_110
Определяется для автоматического исключения функции (в данном случае gsl_HAVE_ARRAY
), когда
#define gsl_CPP11_OR_GREATER ( gsl_CPLUSPLUS >= 201103L )
Оценивается как истинное. gsl_CPLUSPLUS
определяется как
# define gsl_CPLUSPLUS __cplusplus
Но я не могу понять значение __cplusplus
.