Bonjour à tous,
Je voudrais savoir s'il est possible de placer des paramètres variables dans une macro.
Je m'explique : je voudrais faire une librairie de journalisation dans laquelle en appelant la fonction logger_debug, on obtienne quelque chose du genre:
Comme vous le voyez, je voudrais le nom du fichier ainsi que le numéro de ligne où la fonction a été appelée.DEBUG 18/01/2008 - 15:22:32 - mainc.c:32 - Un message de debug
J'ai donc fait une fonction ayant ce prototype:
Les variables source_file et int line sont toujours renseignées grace aux macros __FILE__ et __LINE__. Ce qui me donne donc dans mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 void logger_debug(LOGGER *logger, const char *source_file, const int line, const char *format, ...);
J'aurais voulu simplifier l'appel de la fonction en créant une macro, ce qui me permettrait d'écrire un truc du genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 logger_debug(logger, __FILE__, __LINE__, "%s", "Un message de debug"); logger_debug(logger, __FILE__, __LINE__, "%s", "Un autre message de debug");Malheureusement, le problème est que le nombre de paramètres de la fonction est variable, et la macro définie ainsi
Code : Sélectionner tout - Visualiser dans une fenêtre à part LOG_DEBUG(logger, "%s", "Un message de debug")ne compile pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part #define LOG_DEBUG(logger, format, ...) logger_debug(logger, __FILE__, __LINE__, format, ...)
Comment puis-je résoudre ce problème?
Partager