Mam sobie bibliotekę:
//plik.h
#include <cstdarg>
#include <iostream>
#include <fstream>
#ifdef DEBUG_ON
#define myprintf printf
#define myout std::cout
#else
#define myprintf myPrintf
#define myout mycout
#endif
inline int myPrintf(const char* format, ...){} ;
extern std::ofstream mycout;
//plik.cpp
#include "myout.h"
std::ofstream mycout("/dev/null") ;
i kompiluję w zależności czy chcę debug czy release. ( -DDEBUG_ON )
Jak widać, w przypadku release i włączonej optymalizacji wszystkie wystąpienia myprintf w kodzie programu zostaną zignorowane. W przypadku debug, będzie to po prostu printf.
Natomiast wystąpienia myout w przypadku release zostaną przekierowane do /dev/null, w przypadku debug do std::cout.
Moje pytanie brzmi: jak optymalniej rozwiązać sprawę myout? Tzn. aby wszystkie wystąpienia myout również zostały zignorowane.
Dziękuję i pozdrawiam
Przykładowy program:
#include "myout.h"
int main(int argc, char *argv[])
{
myout<<"Hello "<<"world"<<std::endl<<\t:)\n" ;
int a=4,b=-3;
myprintf("%d x %d == %d\n",a,b,a*b);
return 0;
}