Compilateur C99 uniquement!
#include <stdio.h>
#define DEBUG
#ifdef DEBUG
#define debug(...) printf(__VA_ARGS__)
#else
#define debug while(0)
#endif
int main(int argc, char *argv[])
{
debug("Only shows when DEBUG is defined!\n");
return 0;
}
pour être honnête macros varidic ne sont pas nécessaires, vous pouvez simplement écrire facilement comme ceci:
#include <stdio.h>
#define DEBUG
#ifdef DEBUG
#define debug printf
#else
#define debug while(0)
#endif
int main(int argc, char *argv[])
{
debug("Only shows when DEBUG is defined!\n");
return 0;
}
En y repensant, des informations de débogage devrait aller à stderr afin de ne pas interférer avec la sortie standard, donc celui-ci devrait être favorisé:
#include <stdio.h>
#define DEBUG
#ifdef DEBUG
#define debug(...) fprintf(stderr, __VA_ARGS__)
#else
#define debug while(0)
#endif
int main(int argc, char *argv[])
{
debug("Only shows when DEBUG is defined!\n");
return 0;
}
Je ne m'en souviens pas. C'est une réponse utile, cependant, je voudrais savoir comment réaliser ce que j'ai demandé avec Varargs. Merci quand même. Votez. – nunos
+1. Nice et simple. Pourquoi réinventer la roue? –
Pourquoi y a-t-il un 'printf' après 'while (0)'? –