Je pensais que d'une petite fonction en ligne de débogage en C++:C++ - En passant std :: ostream à une fonction
void inline debug(int debug_level, ostream& out) {
if (debug_level <= verbosity) {
out.flush();
}
else {
ostream tmp;
tmp << out;
}
}
Ceci est un exemple de la façon dont je voulais l'utiliser:
_debug(7, cout << "Something something" << someint << endl);
Cependant, cela ne fonctionne pas comme prévu - je voulais que le message soit imprimé uniquement si le niveau de verbosité est supérieur ou égal au niveau de débogage passé à fonctionner, mais il semble qu'il imprime à chaque fois quel que soit le niveau de débogage. dans le tampon cout. Maintenant, je pense que cette fonction n'est pas la meilleure idée que j'ai eu récemment, mais je veux quand même savoir s'il y a un moyen de vider le tampon associé à cout, cerr etc. Est-il possible de faire fonctionner correctement ce genre de fonction?
Si vous voulez aller la route de Konrad, en utilisant l'idée d'un flux nul, jetez un oeil à cette question http://stackoverflow.com/questions/760301/implementing-a-no-op-stdostream –
Oh, je Je n'aime pas les macros oldschool-C, je préfère la méthode C++;) – zbigh
Les macros sont à peu près aussi évitables en C++ qu'en C, j'en ai peur. –