-1

1 つの pdf 記事で、列挙定数を処理しないと警告が生成されることがわかりました。しかし、私の Bloodshed/DevC++ コンパイラでは、警告なしで正常に動作します。問題はどこだ?ここにスニペットがあります、

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

そのpdfドキュメントによると、バナナ、リンゴ、ブルーベリーを処理し、マンゴーを処理しないと警告が生成されますが、警告が見つかりません。

もう 1 つのことは、ここで enum 変数 my_fruit の目的は何かです。私が疑問に思っているのは、Cでenum変数の特別な使用法があるということです.通常のintではなく独特の使用法がない場合、なぜそれらが存在するのですか?

4

1 に答える 1

4

警告は、でのenum fruit変数の使用を参照していますswitch:

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

gcc -Wallコンパイラでコンパイルすると、次の警告が出力されます。

列挙値 'mango' はスイッチで処理されません

これは、潜在的な見落としを開発者に警告するため、有用な診断です。const intこれは、(コンパイラの観点から) 無関係な変数のコレクションでは不可能です。

于 2012-06-22T15:26:48.703 に答える