Macros (C/C++)
Le prétraitement développe des macros dans toutes les lignes qui sont pas directive de préprocesseur (ligne qui n'ont pas # comme premier caractère autre qu'un espace blanc) et parties de certaines directives qui ne sont pas ignorées dans le cadre d'une compilation conditionnelle. "Directives de compilation conditionnelle les » vous permettent de supprimer la compilation des parties d'un fichier source en testant une expression constante ou d'un identificateur pour déterminer les blocs de texte sont passés dans le compilateur et les blocs de texte sont supprimés du fichier source pendant le prétraitement.
La directive d' #define est généralement utilisée pour associer des identificateurs explicites à des constantes, des mots clés, et les instructions ou des expressions couramment utilisées.Les identificateurs qui représentent des constantes sont parfois appelés « des constantes symboliques » ou « manifestes des constantes. » Les identificateurs qui représentent des instructions et des expressions sont appelés « macros. » Dans cette documentation de préprocesseur, seul le terme « macro » est utilisé.
Lorsque le nom de la macro est identifié dans le texte source de programme ou dans les arguments de plusieurs autres commandes de préprocesseur, il est traité comme un appel à cette macro.Le nom de la macro est remplacée par une copie du macro corps.Si le reçoit des arguments, les arguments réels qui suivent le nom de la macro sont substitués à des paramètres formels au macro corps.le processus de remplacer une macro-instruction avec la copie traitée du corps est appelé « expansion » de la macro-instruction.
En pratique, il existe deux types de macros. "les macros » comme un objet ne prennent pas d'arguments, alors que macros « comme une fonction en » peuvent être définies pour accepter des arguments afin qu'elles ressemblent et agissent dans des appels de fonction.Étant donné que les macros ne génèrent pas d'appels de fonction réels, vous pouvez parfois créer des programmes s'exécuter plus rapidement en remplaçant les appels de fonction avec des macros.(En C++, les fonctions inline sont souvent une méthode conseillée.) Toutefois, les macros peuvent créer des problèmes si vous ne les définissez ni n'utilisez pas avec prudence.Vous devrez peut-être utiliser des parenthèses dans les définitions de macros avec des arguments pour conserver la priorité appropriée dans une expression.En outre, les macros peuvent correctement ne pas gérer les expressions avec des effets secondaires.Consultez l'exemple d' getrandom dans La directive #define pour plus d'informations.
Une fois que vous avez défini une macro, vous ne pouvez pas la redéfinir une valeur différente sans supprimer en premier la définition d'origine.Toutefois, vous pouvez redéfinir la macro avec exactement la même définition.Ainsi, la même définition peut apparaître plusieurs fois dans un programme.
# La directive d'undef supprime la définition d'une macro.une fois que vous avez supprimé la définition, vous pouvez redéfinir la macro à une valeur différente.La directive #define et La directive de #undef décrivent les directives d' #define et d' #undef , respectivement.
Pour plus d'informations, consultez