ホームページ > バックエンド開発 > C++ > C でのグローバル変数の初期化は依存関係を無視できますか?

C でのグローバル変数の初期化は依存関係を無視できますか?

Patricia Arquette
リリース: 2024-10-28 06:48:02
オリジナル
445 人が閲覧しました

Can Global Variable Initialization in C   Ignore Dependencies?

C のグローバル初期化順序 : 依存関係の無視

問題:

コード スニペット内ただし、グローバル変数の初期化の順序は依存関係を無視しているように見えます。具体的には、構造体のコンストラクター メソッドは、構造体インスタンスが宣言される前に呼び出されます。

答え:

1。グローバルの初期化順序:

  • 単一の翻訳単位 (ソース ファイル) 内のグローバル変数は、定義された順序で初期化されます。
  • ただし、初期化順序は異なる翻訳単位のグローバル変数は指定されていません。

2.初期化での依存関係の無視:

はい、グローバルの初期化順序では依存関係が無視されます。これは、グローバル変数は、それが依存する別のグローバル変数の前に初期化される可能性があることを意味します。

3.適切な初期化順序の確保:

ダミーを初期化する前に Foo のコンストラクターが確実に呼び出されるようにするには、次の手順を実行できます:

  • 同じ内でダミーの前に globalFoo を定義します。翻訳単位。
  • グローバル インスタンスへの静的ポインターを使用します。ポインタは、動的初期化が行われる前に null に初期化されます。
  • addToGlobal で、ポインタが null かどうかを確認します。存在する場合、addToGlobal はグローバル Foo インスタンスを作成します。

以上がC でのグローバル変数の初期化は依存関係を無視できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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