Le débat entourant l'utilisation de #define pour redéfinir les mots-clés dans les préprocesseurs C a soulevé des questions sur la conformité aux normes. Cet article approfondit le problème pour fournir une compréhension claire de la licéité et des conséquences d'une telle pratique.
Un préprocesseur conforme aux normes peut-il permettre la redéfinition des mots clés ?
Oui , un préprocesseur C conforme aux normes permet l'utilisation de #define pour redéfinir les mots-clés du langage. Cependant, cela n'est pas obligatoire par la norme.
Un préprocesseur conforme aux normes doit-il autoriser la redéfinition des mots clés ?
Non, la norme n'exige pas qu'un préprocesseur conforme permette redéfinition des mots-clés. Cependant, la norme restreint l'utilisation de macros qui redéfinissent les noms déclarés ou définis dans les en-têtes standards inclus.
Conséquences de la redéfinition des mots-clés
Alors qu'un préprocesseur peut autoriser la redéfinition des mots-clés , cela ne rend pas les normes du programme qui en résultent conformes. La redéfinition des mots-clés peut entraîner des erreurs de compilation ou un comportement inattendu en raison de conflits avec la syntaxe et la sémantique des mots-clés d'origine.
Directives spécifiques
En C 0x, il y a eu une proposition pour interdire purement et simplement la redéfinition des mots clés, mais cela n'a pas été mis en œuvre. Le texte standard pertinent met simplement en garde contre la définition de macros pour des noms lexicalement identiques aux mots-clés dans les unités de traduction qui incluent des en-têtes standard.
Conclusion
Bien qu'il soit possible d'utiliser #define pour redéfinir les mots-clés dans les préprocesseurs C, cela se fait au détriment de la conformité aux normes pour le programme résultant. Il est crucial d'éviter de redéfinir les mots-clés pour garantir la compatibilité et la fiabilité du code 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!