#undef
Remonter à Définition et annulation de la définition des macros - Index
Syntaxe
#undef macro_identifier
Description
Vous pouvez annuler la définition d'une macro en utilisant la directive #undef. #undef détache toute séquence de tokens précédente de l'identificateur de la macro. La définition de la macro est alors oubliée et l'identificateur de macro est indéfini. Aucun développement de macro n'est effectué dans les lignes #undef.
L'état défini ou non défini est une propriété importante d'un identificateur, quelle que soit la définition réelle. Les directives conditionnelles #ifdef et #ifndef, utilisées pour tester si un identificateur est actuellement défini ou non, offrent un mécanisme flexible pour le contrôle des nombreux aspects d'une compilation.
Une fois qu'un identificateur de macro est passé à l'état indéfini, il peut être redéfini avec #define, en utilisant la même séquence de tokens ou une autre séquence.
La tentative de redéfinition d'un identificateur de macro déjà défini entraîne un avertissement, à moins que la nouvelle définition ne soit exactement la même, token par token, que celle déjà existante. La stratégie préférée où des définitions peuvent exister dans d'autres fichiers en-tête est la suivante :
#ifndef BLOCK_SIZE #define BLOCK_SIZE 512 #endif
La ligne intermédiaire est ignorée si BLOCK_SIZE
est actuellement défini. S'il ne l'est pas, la ligne intermédiaire est invoquée pour le définir.
Aucun point-virgule (;) n'est nécessaire pour terminer une directive du préprocesseur. Tout caractère trouvé dans la séquence de tokens, notamment les points-virgules, apparaîtra dans le développement de la macro. La séquence de tokens se termine au niveau du premier saut de ligne sans barre inverse. Toute séquence de caractères inertes, notamment les commentaires dans la séquence de tokens, est remplacée par un caractère espace unique.