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

Comment implémenter des paramètres facultatifs dans les macros C pour la personnalisation du code ?

Susan Sarandon
Libérer: 2024-11-21 04:09:14
original
383 Les gens l'ont consulté

How can you implement optional parameters in C   macros for code customization?

Personnalisation des paramètres avec des macros C

Les macros sont un aspect fondamental de la programmation C, permettant la personnalisation et la flexibilité du code. Une exigence courante est la possibilité de définir des paramètres facultatifs dans les macros.

Paramètres facultatifs

Considérez l'exemple suivant où nous avons une macro qui imprime une chaîne :

#define PRINT_STRING(message) PrintString(message, 0, 0)
Copier après la connexion

Cette macro accepte un paramètre obligatoire, le message à imprimer. Pour le rendre plus polyvalent, nous pouvons introduire des paramètres facultatifs pour la taille de la chaîne et le style de police :

#define PRINT_STRING_1_ARGS(message)              PrintString(message, 0, 0)
#define PRINT_STRING_2_ARGS(message, size)        PrintString(message, size, 0)
#define PRINT_STRING_3_ARGS(message, size, style) PrintString(message, size, style)
Copier après la connexion

Surcharge avec des macros

Pour réaliser une surcharge, nous utilisons un astuce pour compter le nombre d'arguments fournis à la macro. Ensuite, nous sélectionnons la macro d'assistance appropriée en fonction de ce nombre d'arguments :

#define GET_4TH_ARG(arg1, arg2, arg3, arg4, ...) arg4
#define PRINT_STRING_MACRO_CHOOSER(...) \
    GET_4TH_ARG(__VA_ARGS__, PRINT_STRING_3_ARGS, \
                PRINT_STRING_2_ARGS, PRINT_STRING_1_ARGS, )
Copier après la connexion

Utilisation

Nous pouvons maintenant utiliser la macro PRINT_STRING surchargée avec des paramètres facultatifs :

#define PRINT_STRING(...) PRINT_STRING_MACRO_CHOOSER(__VA_ARGS__)(__VA_ARGS__)
Copier après la connexion

Par exemple, nous pouvons appeler la macro sans argument pour imprimer la chaîne par défaut :

PRINT_STRING("Hello, World!");
Copier après la connexion

Ou spécifier la taille de la chaîne :

PRINT_STRING("Hello, World!", 18);
Copier après la connexion

Ou les deux la taille de la chaîne et le style de police :

PRINT_STRING("Hello, World!", 18, bold);
Copier après la connexion

Cette approche simplifie la gestion des paramètres pour l'appelant de la macro, améliorant ainsi la réutilisabilité et la polyvalence du code.

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