Redéfinition des mots-clés dans le prétraitement C : conformité aux normes
L'utilisation de #define pour redéfinir les mots-clés du langage a suscité un débat dans la communauté des développeurs. Cet article approfondit les normes concernant cette pratique.
Conformité aux normes avec des mots-clés redéfinis
Selon la norme C (§17.4.3.1.1/2), un Le préprocesseur C conforme aux normes ne peut pas redéfinir les mots-clés si une unité de traduction inclut un en-tête de bibliothèque standard. Cette restriction est levée pour les unités de traduction sans en-têtes standards.
En C 0x, la deuxième phrase du paragraphe susmentionné semblait interdire purement et simplement la redéfinition des mots-clés, prêtant à confusion. Cependant, Ken Bloom a précisé que les règles n'ont pas changé dans C 0x. Le texte a simplement été réorganisé d'une manière pouvant prêter à confusion.
Conséquences de non-conformité
Si un programme C redéfinit un mot-clé de langage, il ne le fait pas intrinsèquement deviennent non conformes. Cependant, il n’est pas garanti qu’il soit portable sur différents compilateurs ou plates-formes. De plus, un tel programme peut rencontrer un comportement inattendu ou des erreurs s'il tente d'interagir avec les en-têtes de bibliothèque standard qui attendent la définition du mot clé d'origine.
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!