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)
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)
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, )
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__)
Par exemple, nous pouvons appeler la macro sans argument pour imprimer la chaîne par défaut :
PRINT_STRING("Hello, World!");
Ou spécifier la taille de la chaîne :
PRINT_STRING("Hello, World!", 18);
Ou les deux la taille de la chaîne et le style de police :
PRINT_STRING("Hello, World!", 18, bold);
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!