【问题标题】:facts with enumeration枚举事实
【发布时间】:2026-01-31 05:55:01
【问题描述】:

我在一篇 pdf 文章中发现不处理枚举常量会产生警告。但在我的 Bloodshed/DevC++ 编译器中,它运行良好,没有任何警告。哪里有问题? 这是一个sn-p,

enum fruit {banana, apple, blueberry, mango} my_fruit;

根据处理香蕉、苹果和蓝莓但不是芒果的 pdf 文档会生成警告,但我找不到警告。

另一件事是这里枚举变量 my_fruit 的目的是什么。我想知道 C 中枚举变量有什么特殊用途。如果没有独特的用途,而是正常的 int,那么为什么它们会出现?

【问题讨论】:

  • 处理对你来说是什么意思?你能链接你引用的pdf资源吗?
  • 这里的处理意味着以后使用。考虑在 switch 块中使用前三个而不是最后一个...
  • 好的,然后在您的问题中提及switch

标签: c enums int constants gnu


【解决方案1】:

警告是指在switch 中使用enum fruit 变量:

switch (my_fruit)
{
case banana:
    break;
case apple:
    break;
case blueberry:
    break;
}

当使用gcc -Wall 编译时,编译器会发出以下警告:

枚举值“芒果”未在开关中处理

这是一个有用的诊断,因为它会提醒开发人员注意潜在的疏忽。这对于不相关(从编译器的角度)const int 变量的集合是不可能的。

【讨论】: