列挙型の前方宣言。列挙型の完全な定義を次の時点まで延期できる機能です。コードの後半で、これは特定のシナリオでは望ましい機能です。ただし、C では、この機能は C 11 が導入されるまでサポートされていませんでした。
制限の理由:
C 03 以前のバージョンでは、列挙型は暗黙的にサポートされていました。内容に基づいてサイズが設定されます。これは、コンパイラが適切なストレージ タイプを決定するために列挙値の完全なセットを知る必要があることを意味します。前方宣言は列挙型名のみを指定するため、列挙型のサイズを推測することができず、禁止されています。
C 11 前方宣言:
C 11 enum :
enum Enum2 : unsigned int; // Legal in C++11, size explicity specified
さらに、C 11 で導入された enum クラス キーワードは、デフォルトを割り当てるため、列挙型を前方宣言する方法も提供します。 enum への "int" 型。
enum class Enum3; // Legal in C++11, default type is "int"
代替アプローチ:
下位互換性の問題またはその他の理由により前方宣言が不可能な場合は、同様のカプセル化を実現する代替アプローチがあります。
結論:
C 11 以降のバージョンでは、enum サイズを明示的に指定することで enum の前方宣言が可能です。 C の以前のバージョンでは、代替技術を使用して同様のカプセル化を実現できます。
以上がC 列挙型は前方宣言できますか?可能であれば、いつどのように宣言できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。