ホームページ >バックエンド開発 >C++ >Java の静的ブロックに相当する C 言語はありますか?また、同様の動作を実現するにはどうすればよいですか?

Java の静的ブロックに相当する C 言語はありますか?また、同様の動作を実現するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-27 03:22:02531ブラウズ

Is there a C   equivalent for Java's static blocks, and how can similar behavior be achieved?

C の静的ブロック

質問:

Java では、静的ブロックはクラスの静的メンバーを初期化するために使用されます。 。ただし、C には同様の機能が提供されていないようです。 Java 静的ブロックの動作をエミュレートする C のイディオムはありますか?

答え:

Java の意味での静的ブロックは C には存在しませんが、クラスの外で同様の動作を実現するためのテクニック。静的コード ブロックは、マクロとダミー変数の組み合わせを使用して、翻訳単位スコープで実装できます。

プロセス読み込み時の初期化の場合:

最初のクラスのインスタンス化での初期化の場合:

StaticInitialized 基本クラスにより、MyClass の最初のインスタンスが作成されるときに、initializeStatics() が 1 回だけ呼び出されるようになります。

使用法:

static_block マクロを使用して、main() の前に実行される静的ブロックを作成できます。

実装:

実装関数呼び出しで初期化されたダミー変数が含まれます。静的ブロック コードは関数の本体です。マクロは、名前の衝突を防ぐために一意の識別子を生成するために使用されます。

注:

  • 静的ブロックは中括弧で囲む必要があります。
  • 静的コードの実行順序は、C では保証されていません。
  • このアプローチでは、静的な初期化順序の問題は解決されません。

以上がJava の静的ブロックに相当する C 言語はありますか?また、同様の動作を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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