Maison > développement back-end > C++ > Pourquoi les initialiseurs désignés ont-ils été exclus de C 11 ?

Pourquoi les initialiseurs désignés ont-ils été exclus de C 11 ?

Barbara Streisand
Libérer: 2024-12-28 10:52:14
original
118 Les gens l'ont consulté

Why Were Designated Initializers Excluded from C  11?

Initialiseurs désignés dans C 11 : justification de l'exclusion

Alors que C99 permet l'utilisation de listes d'initialiseurs désignés, comme dans l'extrait de code fourni , C 11 interdit cette fonctionnalité. Cette décision du comité standard C 11 soulève la question de savoir pourquoi une fonctionnalité aussi pratique a été exclue.

C.1.7[diff.decl].4 : Restrictions en C  :

L'introduction d'initialiseurs désignés en C aurait posé plusieurs défis :

  • Évaluation indéterminée Ordre : En C99, l'ordre d'évaluation des initialiseurs désignés n'est pas spécifié, ce qui conduit à un comportement potentiellement indéfini si les membres initialisés interagissent. En revanche, C applique un ordre d'évaluation strict pour les listes d'initialiseurs, évitant ainsi de tels problèmes.
  • Comportement incohérent avec C99 : autoriser les initialiseurs désignés en C aurait nécessité de rompre la compatibilité avec les implémentations C99 existantes, ce qui faire appliquer une ordonnance d’évaluation spécifique. Cela aurait introduit des problèmes potentiels de portabilité.
  • Désignateurs imbriqués et initialisations de tableaux : C99 autorise également les désignateurs imbriqués et l'initialisation désignée par tableau, ce qui aurait ajouté encore plus de complexité au langage C et soulevé des inquiétudes concernant comportement incohérent.

Conclusion :

Le comité de norme C 11 a soigneusement examiné ces limitations techniques, ainsi que le potentiel de problèmes de compatibilité et de comportement incohérent, lorsqu'il a choisi d'exclure les listes d'initialiseurs désignées. Au lieu de cela, C fournit un ordre d'évaluation strict pour les listes d'initialiseurs afin de garantir un comportement prévisible et de maintenir la compatibilité avec ses règles existantes.

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