我正在尝试使用arm-none-eabi-gcc为STM32编译一个USB环回示例,但遇到了bool变量的编译器错误。错误为错误:“_Bool”之前应有“;”、标识符或“(”
,违规行为
typedef enum
{
FALSE = 0, TRUE = !FALSE
}
bool;
根据我的阅读,似乎 bool
是 _Bool
的别名,而 gcc 转换为 bool
是一个实际类型。不幸的是我不知道如何解决这个问题。通过一些谷歌搜索,我发现类似的问题有时与在其他地方定义 TRUE
和 FALSE
有关,但我使用的 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/