gpt4 book ai didi

c - 在 C 中声明枚举变量的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-02 09:28:46 25 4
gpt4 key购买 nike

这个问题源于一个老问题:

How to define an enumerated type (enum) in C?

该问题下面的答案相互矛盾。例如,one answer说“你需要使用typedef”,another争论“你不需要typedef”,下面的评论写道“你不能在C中使用enum策略{...};——你可以而且应该不过用 C++ 来做。”这真的让我很困惑。更重要的是,OP 的代码在我所有的计算机上使用 clang 进行编译时甚至没有警告。

所以,我的问题是:在 C 中,使用枚举变量的最佳实践是什么?

最佳答案

C 有两个命名空间,一个用于变量和函数,另一个用于 enumstruct 等内容。我们将第二个命名空间称为 enum 命名空间。

当你声明一个enum时,如enum Foo {Bar1, Bar2};Foo,枚举常量将被放入枚举命名空间。

这意味着只要您想使用该枚举,就必须使用 enum 前缀。打字很多不方便! (出于兴趣,这同样适用于struct)。

幸运的是,C 允许您从 enum 命名空间东西,因此它们也出现在变量和函数命名空间中。您可以使用 typedef 来做到这一点:

typedef enum Foo {Bar1, Bar2} Foo;

第一个 Foo 是它在 enum 命名空间中的名称,第二个 Foo 是它在函数和变量命名空间中的名称。

您不需要在 C++ 中执行此操作:除非您显式使用命名空间,否则所有内容都位于全局命名空间中。

关于c - 在 C 中声明枚举变量的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35293736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com