ホームページ > バックエンド開発 > C++ > C 列挙型は前方宣言できますか?可能であれば、いつどのように宣言できますか?

C 列挙型は前方宣言できますか?可能であれば、いつどのように宣言できますか?

Susan Sarandon
リリース: 2024-12-19 17:37:14
オリジナル
339 人が閲覧しました

Can C   Enums Be Forward Declared, and If So, How and When?

C での列挙型の前方宣言 : 制限と代替案の探索

列挙型の前方宣言。列挙型の完全な定義を次の時点まで延期できる機能です。コードの後半で、これは特定のシナリオでは望ましい機能です。ただし、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"
ログイン後にコピー

代替アプローチ:

下位互換性の問題またはその他の理由により前方宣言が不可能な場合は、同様のカプセル化を実現する代替アプローチがあります。

  • クラスの代わりにクラスを使用します。 enum.
  • typedef を使用して enum 型のシンボリック定数を作成します。
  • マクロを使用する

結論:

C 11 以降のバージョンでは、enum サイズを明示的に指定することで enum の前方宣言が可能です。 C の以前のバージョンでは、代替技術を使用して同様のカプセル化を実現できます。

以上がC 列挙型は前方宣言できますか?可能であれば、いつどのように宣言できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート