I have codes like this:
#define SUPPORTS_LOGGING
class Logger {
// ...
template<typename... Args>
void info(const char* fmt, const Args&... args) { /*...*/ }
// ...
};
Logger logger_ {};
void someMethod() {
#ifdef SUPPORTS_LOGGING
logger_.info("....");
#endif
//....
#ifdef SUPPORTS_LOGGING
logger_.info("....");
#endif
}
So, my problem is, logging code clutters main code, due to lot of #ifdef
s. Can we remove #ifdef
s in one line? Like:
LOG_INFO(logger_, info, "%d%d%d", a, b, c);
And above code conditionally expands to: logger_.info("%d%d%d", a, b, c);
if SUPPORTS_LOGGING
is defined.
Can we do this?
Aucun commentaire:
Enregistrer un commentaire