ホームページ >バックエンド開発 >C++ >C++ 構文エラー: 列挙メンバーは一意である必要があります。どのように変更すればよいですか?

C++ 構文エラー: 列挙メンバーは一意である必要があります。どのように変更すればよいですか?

王林
王林オリジナル
2023-08-21 23:58:501556ブラウズ

C プログラムを作成するときに、次のエラー メッセージが表示されることがあります。

「C 構文エラー: 列挙型メンバーは一意である必要があります。」

これは、型内の列挙型が原因です。 、列挙メンバーの名前は一意である必要があり、重複することはできません。

それでは、このエラーを修正するにはどうすればよいでしょうか?いくつかの解決策を以下に示します。

方法 1: 列挙型メンバーの名前を手動で変更する

最も簡単な方法は、列挙型メンバーの名前を手動で変更して、一意になるようにすることです。たとえば、重複するメンバー名を別の名前に変更します。

たとえば、以下に示すように、同じメンバー名を持つ 2 つのメンバーを含む列挙型を定義すると:

enum Fruit
{
    Banana,
    Apple,
    Strawberry,
    Apple
};

コンパイラは、「C 構文エラー: 列挙メンバーは一意である必要があります」というプロンプトを表示します。 」。以下に示すように、メンバー名の 1 つを別の名前に変更できます。

enum Fruit
{
    Banana,
    Apple,
    Strawberry,
    Orange
};

これにより、このエラーは解決されます。

方法 2: typedef を使用して新しい列挙型を定義する

元の列挙型を変更したくない場合は、typedef を使用して新しい列挙型を定義し、列挙型を置き換えることもできます。元の Enum 型の名前が変更されました。

たとえば、上記の Fruit 列挙型の名前を FruitType に変更できます。

typedef enum
{
    Banana,
    Apple,
    Strawberry,
    Apple
} FruitType;

この方法で、プログラム内で FruitType を使用して、元の Fruit 列挙型を置き換えることができます。

方法 3: 列挙型クラスを使用する

C 11 では、列挙型を定義するときに列挙型メンバーの名前空間を制限できる列挙型クラス (enum クラス) の新機能が導入されています。名前の競合の問題を回避します。

たとえば、enum クラスを使用して、Fruit という名前の列挙型を定義し、そのメンバーの名前空間を Fruit に制限できます。

enum class Fruit
{
    Banana,
    Apple,
    Strawberry,
    Apple
};

現時点では、同じ名前のメンバーの場合、コンパイラは警告ではなくエラーを報告します。

概要:

C では、列挙メンバーは一意である必要があり、繰り返すことはできません。コンパイラーによって「C 構文エラー: 列挙型メンバーは一意である必要があります」というプロンプトが表示された場合は、列挙型メンバー名を手動で変更するか、typedef を使用して新しい列挙型を定義するか、列挙型クラスを使用して問題を解決できます。列挙型クラスを使用する方法は、C 11 で導入された新機能であり、列挙型メンバーの名前の競合の問題を効果的に回避できます。

以上がC++ 構文エラー: 列挙メンバーは一意である必要があります。どのように変更すればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。