質問:
Java では、静的ブロックはクラスの静的メンバーを初期化するために使用されます。 。ただし、C には同様の機能が提供されていないようです。 Java 静的ブロックの動作をエミュレートする C のイディオムはありますか?
答え:
Java の意味での静的ブロックは C には存在しませんが、クラスの外で同様の動作を実現するためのテクニック。静的コード ブロックは、マクロとダミー変数の組み合わせを使用して、翻訳単位スコープで実装できます。
プロセス読み込み時の初期化の場合:
最初のクラスのインスタンス化での初期化の場合:
StaticInitialized 基本クラスにより、MyClass の最初のインスタンスが作成されるときに、initializeStatics() が 1 回だけ呼び出されるようになります。
使用法:
static_block マクロを使用して、main() の前に実行される静的ブロックを作成できます。
実装:
実装関数呼び出しで初期化されたダミー変数が含まれます。静的ブロック コードは関数の本体です。マクロは、名前の衝突を防ぐために一意の識別子を生成するために使用されます。
注:
以上がJava の静的ブロックに相当する C 言語はありますか?また、同様の動作を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。