使用arm-none-eabi-gcc和bool变量的编译器错误

标签 c gcc arm stm32

我正在尝试使用arm-none-eabi-gcc为STM32编译一个USB环回示例,但遇到了bool变量的编译器错误。错误为错误:“_Bool”之前应有“;”、标识符或“(”,违规行为

typedef enum
{
  FALSE = 0, TRUE  = !FALSE
}
bool;

根据我的阅读,似乎 bool_Bool 的别名,而 gcc 转换为 bool 是一个实际类型。不幸的是我不知道如何解决这个问题。通过一些谷歌搜索,我发现类似的问题有时与在其他地方定义 TRUEFALSE 有关,但我使用的 STM 中的代码基本上没有变化,并且不知道它们可能在其他任何地方被定义。我还了解到这可能是由于链接 libc 而导致的,但在使用 -nostdlib 编译时出现了相同的错误。我能做些什么来缩小这个问题的范围吗?谢谢。

最佳答案

由于这个 typedef 试图定义一个 bool 类型,而我的编译器试图使用 _Bool 类型,所以我最终所做的就是一起注释掉 typedef 并仅使用

#define TRUE 1
#define FALSE 0

我不确定这是否解决了问题,因为我仍然无法枚举 USB 设备,但程序现在可以编译。

关于使用arm-none-eabi-gcc和bool变量的编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33682173/

相关文章:

c - 将元素添加到 fifo 队列

c - 如何快速用值填充结构?

c - 使用 gcc 链接目标文件之前编译出错

c - 为什么当我使用gcc和eclipse cdt编译代码时,可执行文件的大小存在差异

c - ARM Cortex 上的 super 简单 Tasker

java - 如何按照 C 和 C++ 的字节顺序将类转换为字节数组?

c - 在运行时访问 build-id

c - 为什么 main P2((ac, av), int ac, char ** av) ?

linux - ARM交叉编译

arm - 如何以编程方式识别ARM板