我在一篇pdf文章中发现,不处理枚举常量会产生警告。但在我的Bloodshed / DevC ++编译器中,它没有任何警告就可以正常工作。问题出在哪儿? 这是一个片段,
enum fruit {banana, apple, blueberry, mango} my_fruit;
根据pdf文件处理香蕉,苹果和蓝莓而不是芒果会产生警告,但我无法找到警告。
另一件事是enum变量my_fruit的目的是什么。我想知道的是在C中是否有任何特殊用途的枚举变量。如果没有独特的用途而非正常的int那么为什么它们存在?
答案 0 :(得分:4)
警告是指在enum fruit
中使用switch
变量:
switch (my_fruit)
{
case banana:
break;
case apple:
break;
case blueberry:
break;
}
使用gcc -Wall
编译时,编译器会发出以下警告:
枚举值'mango'未在switch
中处理
这是一个有用的诊断,因为它会提醒开发人员潜在的疏忽。对于不相关的集合(来自编译器的角度)const int
变量,这是不可能的。