Maison > développement back-end > C++ > le corps du texte

Les mots-clés C peuvent-ils être redéfinis à l'aide du préprocesseur #define ?

Barbara Streisand
Libérer: 2024-11-23 14:51:14
original
372 Les gens l'ont consulté

Can C   Keywords Be Redefined Using the #define Preprocessor?

Redéfinir les mots-clés avec le préprocesseur C #define

Le débat houleux entourant la validité de la redéfinition des mots-clés du langage à l'aide de #define dans les normes C a souvent suscité controverse. Cet article vise à faire la lumière sur cette question controversée.

Selon le standard C (§17.4.3.1.1/2), les macros de préprocesseur ne peuvent pas redéfinir les noms déclarés ou définis dans les en-têtes de bibliothèques standards. De plus, il interdit la redéfinition de macros lexicalement identiques aux mots-clés C au sein d'une unité de traduction comprenant un en-tête standard.

Cependant, en C , les règles ont subi un changement apparent. Le projet C 0x (FCD §17.6.3.3.1) interdit explicitement la redéfinition des mots-clés en utilisant #define ou #undef. Cette décision semble s'aligner sur le consensus commun selon lequel la manipulation de mots-clés avec le préprocesseur peut conduire à un comportement imprévisible et à des violations potentielles des normes.

Néanmoins, il convient de noter que la déclaration « Une unité de traduction ne doit pas #define ou #undef noms lexicalement identiques aux mots-clés" a depuis été révisé dans la norme finale C 11. Le nouveau libellé (ISO/IEC 14882:2011 §17.6.4.1/4) se lit comme suit : "Une unité de traduction ne doit pas définir de macros pour des noms lexicalement identiques à des mots-clés."

Cette révision semble suggérer que l'interdiction pure et simple sur la redéfinition des mots-clés avec #define a été supprimé de la norme. Cependant, l'interdiction de redéfinir les noms déclarés ou définis dans les en-têtes standards reste en vigueur (ISO/IEC 14882:2011 §17.6.4.1/6).

À la lumière de ce débat en cours, il convient de faire preuve de prudence lorsque tenter de redéfinir les mots-clés du langage dans les programmes C. Bien que cela puisse être techniquement possible sous certaines conditions, de telles pratiques peuvent compromettre la compatibilité du programme avec divers compilateurs et chaînes d'outils. Le respect des normes et l'utilisation de mécanismes alternatifs, tels que des macros de préprocesseur ou des types définis par l'utilisateur, sont généralement considérés comme l'approche la plus sûre.

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