c++ - 为什么我在 C++ 中得到 "error: expected ' }'"但在 C 中却没有?

标签 c++ c enums boolean

当我在以下 C++ 源代码中编译时,我得到了 "error: expected '}'" '^' 指向的地方:

typedef enum { false, true } Boolean;
               ^

当我将其编译为 C 源代码时,我没有收到此错误。

这是什么原因?我很难过!

最佳答案

falsetrue是 C++ 关键字,因此您不能将它们用作 enum标识符。

在 C 中,它们不是关键字,因此您的代码可以工作,但如果您包含 <stdbool.h>那么它将无法编译,因为该 header 定义了 falsetrue作为宏。

请注意,您可能不应该自己实现 boolean 类型。 C++ 已经有了 bool类型,如果您使用的是 C99 编译器,则可以包括 stdbool.h .这会给你一个 bool具有 false 的类型和 true值,类似于 C++。

关于c++ - 为什么我在 C++ 中得到 "error: expected ' }'"但在 C 中却没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18578025/

相关文章:

c++ - 在 Linux 下如何为可执行文件分配堆栈?

c++ - 在构造函数中组织初始化列表的更好方法

从其他 const 数组初始化 const 数组

java - 是否可以弃用 Java 枚举的某些值,如果可以,如何弃用?

c - 用于枚举格式 C 代码的 Eclipse 插件

java - 将 lombok @Getter 注释与 Java 枚举一起使用

c++ - 使用 std::function 进行模板类型推导

c++ - C++ 中的除法

c - 选择排序逻辑错误

c++ - 提取扫描文档的一部分(个人 ID)——选择哪个库和方法?