枚举的事实

时间:2012-06-22 15:14:14

标签: c enums int constants gnu

我在一篇pdf文章中发现,不处理枚举常量会产生警告。但在我的Bloodshed / DevC ++编译器中,它没有任何警告就可以正常工作。问题出在哪儿? 这是一个片段,

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

根据pdf文件处理香蕉,苹果和蓝莓而不是芒果会产生警告,但我无法找到警告。

另一件事是enum变量my_fruit的目的是什么。我想知道的是在C中是否有任何特殊用途的枚举变量。如果没有独特的用途而非正常的int那么为什么它们存在?

1 个答案:

答案 0 :(得分:4)

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

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

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

  

枚举值'mango'未在switch

中处理

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