Paramètres variables dans une macro
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:
Citation:
DEBUG 18/01/2008 - 15:22:32 - mainc.c:32 - Un message de debug
Comme vous le voyez, je voudrais le nom du fichier ainsi que le numéro de ligne où la fonction a été appelée.
J'ai donc fait une fonction ayant ce prototype:
Code:
1 2
| void logger_debug(LOGGER *logger, const char *source_file, const int line,
const char *format, ...); |
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:
1 2
| logger_debug(logger, __FILE__, __LINE__, "%s", "Un message de debug");
logger_debug(logger, __FILE__, __LINE__, "%s", "Un autre message de debug"); |
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:
LOG_DEBUG(logger, "%s", "Un 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:
#define LOG_DEBUG(logger, format, ...) logger_debug(logger, __FILE__, __LINE__, format, ...)
ne compile pas.
Comment puis-je résoudre ce problème?