Maison >développement back-end >C++ >Qu'est-ce que la règle de définition unique C et comment garantit-elle la cohérence du programme ?

Qu'est-ce que la règle de définition unique C et comment garantit-elle la cohérence du programme ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-06 01:32:39908parcourir

What is the C   One-Definition Rule and How Does it Ensure Program Consistency?

La nature de la règle à définition unique en C

En C, la règle à définition unique régit le comportement des programmes en limitant plusieurs définitions de certaines entités au sein d’une unité de traduction. Examinons les détails de cette règle :

Définition officielle

Au-delà de la référence dans Le langage de programmation C, 3e éd., P. 9.2.3 , la définition officielle de la règle se trouve dans la norme C dans la section 3.2 :

"No translation unit shall contain more than one definition of any variable, function, class type, enumeration type or template."

De plus, la norme souligne que chaque fonction ou objet non-inline utilisé dans un programme doit avoir exactement une définition. Si une fonction en ligne est utilisée, elle doit être définie dans chaque unité de traduction où elle est référencée.

Implications

Cette règle garantit que :

  • Cohérence : Plusieurs définitions peuvent introduire des incohérences dans le comportement du programme. La règle de définition unique évite de tels conflits.
  • Identité d'entité unique : Chaque variable, fonction, type de classe et autres entités définies ont une identité unique, garantissant un comportement cohérent tout au long du programme.
  • Compatibilité de l'éditeur de liens : L'éditeur de liens ne peut pas résoudre correctement les références si plusieurs définitions existent. La règle permet une liaison et une compilation fluides.

Exceptions

La règle d'une définition unique ne s'applique pas à :

  • Fonctions en ligne, qui doivent être définies dans chaque unité de traduction dans laquelle elles sont utilisées.
  • Fonctions définies implicitement (voir les sections 12.1, 12.4 et 12.8 de la norme C).

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!

Déclaration:
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