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

时间:2015-11-12 21:54:36

标签: c gcc arm stm32

我正在尝试使用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进行编译时遇到了同样的错误。有什么办法可以缩小这个问题吗?感谢。

1 个答案:

答案 0 :(得分:1)

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

#define TRUE 1
#define FALSE 0

我不是肯定的,这解决了这个问题,因为我仍然无法对usb设备进行枚举,但程序现在已经编译了。