gpt4 book ai didi

c - 枚举名称有什么作用?

转载 作者:太空狗 更新时间:2023-10-29 16:44:49 25 4
gpt4 key购买 nike

  • 枚举是“命名的常量集合”:enum MyType_e {A, B, C};
  • 这些常量是在枚举的父范围内声明的,即如果枚举是在文件范围内声明的,并且未命名,则它等同于一系列例如#define A 0语句<
  • 枚举常量的基础类型始终是 intint var = A 是完全合法的,尽管 var 不是 类型>MyType_e

那么枚举 name 有什么用呢?

编辑根据下面的评论,我对枚举的理解似乎存在很大缺陷。 枚举与#define 语句无关。 Enums are resolved at compile time , 并被键入。

最佳答案

使用 enum 类型传达意图。

假设您有一个函数,它接受一个 enum 常量作为参数。

void foo(enum MyType_e e);

是关于什么是有效输入的 self 记录但是:

void foo(int e);

不是。此外,如果您尝试为 enum 类型传递不兼容的值,编译器可能会发出警告。来自 ISO C99 规范的附件 I(“常见警告”):

An implementation may generate warnings in many situations.... The following are a few of the more common situations.

[...]

  • A value is given to an object of an enumeration type other than by assignment of an enumeration constant that is a member of that type, or an enumeration variable that has the same type, or the value of a function that returns the same enumeration type (6.7.2.2).

如果您在 enum 类型上使用 switch 但忽略处理它的所有常量并且没有默认 案例。

关于c - 枚举名称有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16008723/

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