Maison > développement back-end > C++ > Pourquoi les membres de données statiques ont-ils besoin de définitions externes en C ?

Pourquoi les membres de données statiques ont-ils besoin de définitions externes en C ?

Barbara Streisand
Libérer: 2024-12-17 01:52:25
original
348 Les gens l'ont consulté

Why Do Static Data Members Need External Definitions in C  ?

Pourquoi les membres de données statiques nécessitent une définition externe

La documentation IBM C indique que les membres de données statiques déclarés dans une classe ne sont pas de véritables définitions, et doit être défini en externe dans la portée de l’espace de noms. Cette exigence suit une règle fondamentale en C connue sous le nom de « règle de définition unique ».

Le rôle de la règle de définition unique

La règle de définition unique garantit que chaque règle statique L'objet (s'il est référencé) est défini précisément une fois dans un programme. Cette règle devient cruciale en C, où les définitions de classe sont souvent réparties sur plusieurs fichiers sources et incluses via les fichiers d'en-tête.

Éviter les définitions multiples

Si les déclarations de membres de données statiques dans les en-têtes étaient considérés comme des définitions, cela conduirait à plusieurs définitions dans chaque unité de traduction (fichier source) qui inclut le fichier d'en-tête. Cela violerait la règle de définition unique et provoquerait des erreurs de compilation.

Nécessité de définition externe

Pour éviter ce problème, les données membres statiques ne sont pas définies dans les déclarations de classe mais plutôt fournies comme définitions externes en dehors de la classe. De cette façon, le compilateur peut garantir qu'il n'y a qu'une seule définition pour chaque membre de données statique utilisé dans le programme, quel que soit le nombre de fois que la classe est incluse dans différents modules.

Alternatives à la définition externe

Alternatives à la définition externe

En théorie, C pourrait gérer plusieurs définitions pour les données membres statiques de la même manière que les fonctions en ligne, en les consolidant en une seule définition. Cependant, le langage n'implémente pas ce comportement, ce qui nécessite l'utilisation de définitions externes pour les données membres statiques.

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