0

我从头开始创建了一个简单的 CubeMx 项目并在 Atollic TrueStudio 上打开它。当然,它的编译成功了。我一直在查看项目的目录和文件,以更好地了解构建新项目时的裸结构。

我目前使用配备 CortexM4 CPU 的 STM32 板,并且我正在使用 GCC 编译器用C 语言进行编程。在项目中,我发现了一个名为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文件中的其他位置,但未成功。我忽略了一些相关的东西吗?

4

2 回答 2

0

您说__GNU__符号已定义,但#elif正在检查__GNUC__,这不是一回事。这是你的错字吗?

于 2018-06-11T23:16:41.680 回答
0

根据您的回答,项目编译成功:

请尝试“刷新所有文件”,然后“重建”索引。

(您可以通过在项目资源管理器中右键单击项目名称来找到此命令) 在此处输入图像描述

于 2018-06-12T09:39:01.263 回答