У меня есть такие коды:
#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
}
Итак, моя проблема в том, что при регистрации кода загромождается основной код из-за большого количества #ifdef
s. Можем ли мы удалить #ifdef
s в одну строку? Как:
LOG_INFO(logger_, info, "%d%d%d", a, b, c);
И выше код условно расширяется до: logger_.info("%d%d%d", a, b, c);
, если определено SUPPORTS_LOGGING
.
Можем ли мы сделать это?