Видимость макросов в голом проекте CubeMx и Atollic

Я создал простой проект CubeMx с нуля и открыл его в Atollic TrueStudio. Конечно, его компиляция удачно выходит. Я искал каталоги и файлы проекта, чтобы лучше понять голую структуру при создании новых проектов.

В настоящее время я использую плату STM32, оснащенную процессором CortexM4, и я программирую на C с помощью компилятора GCC. В проекте я нашел файл заголовка с именем core_cm4.h, который предназначен для объявления макросов, то есть операторов #define. Вот где возникает странность: когда я пытаюсь использовать эти макросы в файле main.c (и в любом другом новом файле), все они доступны и распознаются, кроме следующих:

#elif defined ( __GNUC__ )
   #define __ASM            __asm          /*!< asm keyword for GNU Compiler */
   #define __INLINE         inline         /*!< inline keyword for GNU Compiler */
   #define __STATIC_INLINE  static inline

Символ __GNUC__ определен, и компилятор не сообщает никаких предупреждений или ошибок. Однако среда IDE не предлагает эти макросы в раскрывающихся меню и сигнализирует об этом слове как о синтаксической ошибке.

Я безуспешно пытался переместить объявление в другое место в файле core_cm4.h. Я упускаю из виду что-то важное?


person MFrancone    schedule 11.06.2018    source источник
comment
Ваша проблема может быть в предварительном парсере из Atollic Studio / Eclipse. Вы пытались скомпилировать свой проект, даже если он отмечен как синтаксическая ошибка?   -  person theSealion    schedule 12.06.2018
comment
Да, я пытался, и компиляция прошла успешно. Другие проекты, не созданные CubeMX и использующие тот же файл core_cm4.h, правильно извлекают макросы. Так что, возможно, это неправильная конфигурация проектов Atollic, созданных из CubeMX, которая вызывает дефект.   -  person MFrancone    schedule 12.06.2018


Ответы (2)


Вы сказали, что символ __GNU__ определен, но #elif проверяет __GNUC__, что не одно и то же. Это ваша опечатка?

person Gabriel Staples    schedule 11.06.2018
comment
Привет, Габриэль, да, это была опечатка, спасибо! Однако я думаю, что это ошибка ПО, потому что выходной проект cubeMX (и его файлы) абсолютно чистый. - person MFrancone; 12.06.2018

Согласно вашему ответу, проект успешно компилируется:

Пожалуйста, попробуйте «обновить все файлы», а затем «перестроить» индекс.

(Вы можете найти эти команды, щелкнув правой кнопкой мыши имя проекта в проводнике проекта) введите описание изображения здесь

person theSealion    schedule 12.06.2018