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

Compiler error using arm-none-eabi-gcc and bool variables

我正在尝试使用 arm-none-eabi-gcc 为 STM32 编译一个 usb 环回示例,但我卡在 bool 变量的编译器错误上。错误是 error: expected ';', identifier or '(' before '_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 设备,但程序现在可以编译。