Видимость макроса в голом проекте 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 безуспешно. Я пропускаю что-то важное?

2 ответа

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

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

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

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

Другие вопросы по тегам