2012-06-22 102 views
-1

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

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

根据该PDF文档处理香蕉,苹果,蓝莓,但不是芒果会生成一个警告,但我不能找到警告。

另一件事是什么是在这里枚举变量my_fruit的目的。我想知道的是在C语言中有没有什么特殊用途的枚举变量。如果没有特别的用法而不是正常的int,那么它们为什么存在?

+0

**你处理**的含义是什么?你能链接你引用的pdf资源吗? – wap26

+0

处理手段在这里稍后使用。想想在开关块中使用前三个,但不是最后一个...... –

+0

好的,然后在你的问题中提及'switch'。 – wap26

回答

4

该警告是指使用enum fruit变量的一个switch

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

当与gcc -Wall编译编译器发出以下警告:

枚举值“芒果”没有处理in switch

这是一个有用的诊断,因为它提醒de veloper潜在的监督。这是不可能的,从一组无关(从编译器的角度来看)const int变量。