use*_*698 3 c c++ enums boolean
"error: expected '}'"当我在以下C++源代码中编译时,我正在找到'^'指向的位置:
typedef enum { false, true } Boolean;
^
Run Code Online (Sandbox Code Playgroud)
当我将它编译为C源代码时,我没有收到此错误.
这是什么原因?我很难过!
int*_*jay 16
false并且true是C++关键字,因此您不能将它们用作enum标识符.
在C中,它们不是关键字,因此您的代码将起作用,但如果您包含,<stdbool.h>那么它将无法编译,因为该标头定义false和true作为宏.
请注意,您可能不应该自己实现布尔类型.C++已有bool类型,如果您使用的是C99编译器,则可以包含stdbool.h.这将为您提供一个类似于C++ 的bool类型false和true值.
要解决这个问题,您需要做:
#ifdef __cplusplus
typedef bool Boolean;
#else
typedef enum { false, true } Boolean;
#endif
Run Code Online (Sandbox Code Playgroud)
这样,您就不会尝试使用C++关键字(true和false)enum.