Maison > développement back-end > C++ > L'initialisation d'une variable globale en C peut-elle ignorer les dépendances ?

L'initialisation d'une variable globale en C peut-elle ignorer les dépendances ?

Patricia Arquette
Libérer: 2024-10-28 06:48:02
original
446 Les gens l'ont consulté

Can Global Variable Initialization in C   Ignore Dependencies?

Ordre global d'initialisation en C : ignorer les dépendances

Problème :

Dans un extrait de code à condition que l'ordre d'initialisation de la variable globale semble ignorer les dépendances. Plus précisément, la méthode constructeur d'une structure est appelée avant que l'instance de structure ne soit déclarée.

Réponse :

1. Ordre d'initialisation des globaux :

  • Les variables globales dans une seule unité de traduction (fichier source) sont initialisées dans l'ordre dans lequel elles sont définies.
  • Cependant, l'ordre d'initialisation des variables globales dans différentes unités de traduction n'est pas spécifié.

2. Ignorer les dépendances lors de l'initialisation :

Oui, l'ordre d'initialisation des globales ignore les dépendances. Cela signifie qu'une variable globale peut être initialisée avant une autre variable globale dont elle dépend.

3. Assurer le bon ordre d'initialisation :

Pour garantir que le constructeur de Foo est appelé avant d'initialiser Dummy, les étapes suivantes peuvent être suivies :

  • Définissez globalFoo avant Dummy dans le même unité de traduction.
  • Utilisez un pointeur statique vers l'instance globale. Le pointeur sera initialisé à null avant toute initialisation dynamique.
  • Dans addToGlobal, vérifiez si le pointeur est nul. Si tel est le cas, addToGlobal crée l'instance globale Foo.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal