Maison > développement back-end > C++ > En langage C, paramètres de longueur variable des macros

En langage C, paramètres de longueur variable des macros

WBOY
Libérer: 2023-08-27 22:49:06
avant
1403 Les gens l'ont consulté

En langage C, paramètres de longueur variable des macros

Nous savons que les fonctions peuvent être définies à l'aide de paramètres de longueur variable en langage C. Pour cela, nous devons utiliser des ellipses (…). De même, dans les macros, nous pouvons également utiliser des paramètres de longueur variable. Ici aussi, nous devons inclure les ellipses. '__VA_ARGS__' est utilisé pour gérer les arguments de longueur variable. L'opérateur de concaténation '##' est utilisé pour concaténer des paramètres variadiques.

Dans cet exemple, la macro acceptera des arguments de longueur variable, tout comme les fonctions printf() ou scanf(). Dans cette macro, nous imprimerons le nom du fichier, le numéro de ligne et le message d'erreur. Le premier paramètre est pr. Il est utilisé pour déterminer la priorité, c'est-à-dire s'il s'agit d'une chaîne de message normale ou d'un message d'erreur.

Exemple

#include <stdio.h>
#define INFO 1
#define ERR 2
#define STD_OUT stdout
#define STD_ERR stderr
#define LOG_MESSAGE(pr, strm, msg, ...) do {\
   char *str;\
   if (pr == INFO)\
      str = "INFORMATION";\
   else if (pr == ERR)\
      str = "ERROR";\
      fprintf(strm, "[%s] : %s : %d : "msg" </p><p>", \
      str, __FILE__, __LINE__, ##__VA_ARGS__);\
} while (0)
int main(void) {
   char *s = "Test String";
   LOG_MESSAGE(ERR, STD_ERR, "Unable to open the file"); //here normal message will be printed
   LOG_MESSAGE(INFO, STD_OUT, "%s is passed as argument", s); //pass string argument
   LOG_MESSAGE(INFO, STD_OUT, "%d + %d = %d", 14, 16, (14 + 16)); //Provide integer
}
Copier après la connexion

Sortie

[ERROR] : D:\text.c : 21 : Unable to open the file
[INFORMATION] : D:\text.c : 23 : Test String is passed as argument
[INFORMATION] : D:\text.c : 25 : 14 + 16 = 30
Copier après la connexion

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!

Étiquettes associées:
source:tutorialspoint.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal