C は、プログラムの設計と開発でよく使用される、一般的に使用されるプログラミング言語です。 C でプログラムを作成する場合、さまざまなコンパイル エラーや警告が頻繁に発生します。その中で、列挙型を使用すると「非整数型の列挙型の宣言は許可されていません」というエラーが発生することがありますが、この場合はどう対処すればよいのでしょうか。この記事では、C の列挙型とは何か、およびこのエラーを修正する方法について説明します。
C 列挙型
まず、C の列挙型 (列挙型変数とも呼ばれます) について簡単に紹介します。 C では、列挙型はいくつかの値を列挙可能なリストとして定義でき、これらの値は列挙定数と呼ばれます。例を以下に示します。
enum Color {RED, BLUE, GREEN};
ここでは、列挙型 Color を定義し、その値を RED、BLUE、および GREEN として定義します。ここでの各 enum 定数は実際には整数値です。デフォルトでは、RED の値は 0、BLUE の値は 1、GREEN の値は 2 です。
このようにして、さまざまな値を列挙定数として簡単に使用できるため、プログラムがより明確で理解しやすくなります。たとえば、曜日や色などの属性をこの方法で定義できます。
非整数型の列挙型の宣言は許可されていません
ただし、列挙型を定義するときに、「非整数型の列挙型の宣言は許可されていません」というエラーが発生することがあります。 」。例:
enum Fruit {APPLE, BANANA, ORANGE, MANGO} f;
ここでは、列挙型 Fruit を定義し、その値を APPLE、BANANA、ORANGE、MANGO などとして定義し、列挙型変数 f も定義します。
しかし、プログラムをコンパイルすると、コンパイル エラーが見つかります:
error: enumeration type 'Fruit' is not allowed as underlying type of enumeration
このエラーの理由は、C 11 標準より前の列挙型では、列挙定数が以下である必要があるためです。整数型。この例では、各列挙定数に明示的に値を割り当てていませんが (デフォルト値は整数型です)、宣言した Fruit 列挙型は非整数型であったため、コンパイラはエラーを報告しました。
解決策
では、このエラーを修正するにはどうすればよいでしょうか?この問題は、C 11 の新しい「enum クラス」を使用することで解決できます。列挙型クラスは、C 11 の新しいナレッジ ポイントの 1 つです。以前の列挙型と比較すると、定義と使用法にいくつかの違いがあります。
たとえば、上記の Fruit 列挙型を次のように変更できます。
enum class Fruit {APPLE, BANANA, ORANGE, MANGO};
ここでは、enum class キーワードを使用して、Fruit を列挙クラスとして定義します。以前の列挙型とは異なり、列挙クラスの列挙定数は int 型ではなくなりました。この方法では、各列挙定数に明示的に値が割り当てられていなくても、コンパイル エラーは発生しません。
列挙型クラスを使用して定義された列挙型定数には、スコープ指定子 (::) を使用してアクセスする必要があることに注意してください。例:
enum class Fruit {APPLE, BANANA, ORANGE, MANGO}; Fruit f = Fruit::BANANA;
この時点で、f の値は、Fruit 列挙クラスの BANANA 定数の値である必要があります。このようにして、列挙型を定義する際の「非整数型の列挙型の宣言は許可されていません」というエラーを回避します。
結論
C では、列挙型は一般的に使用されるデータ型であり、いくつかの値を列挙可能なリストとして簡単に定義できます。ただし、列挙型を使用する場合、「非整数型の列挙型の宣言は許可されていません」というコンパイル エラーが発生する場合があります。現時点では、C 11 の新しい列挙型クラスを使用して、列挙型を定義する際のコンパイル エラーを回避することで、この問題を解決できます。
以上がC++ エラー: 非整数型の列挙型の宣言は許可されていません。どのように変更すればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。