Видимость макроса в голом проекте 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__
, что не одно и то же. Это опечатка с вашей стороны?