В настоящее время большинство оптимизаций выполняется во время компиляции. Некоторые компиляторы как LLVM могут оптимизировать во время соединения. Это действительно интересная идея. Я предлагаю вам взглянуть на.
В ожидании такого рода оптимизации вы можете сделать следующее. Определите макрос, который позволит вам включить следующую инструкцию в зависимости от того, определен ли DEBUG или нет.
#ifdef DEBUG
#define IF_DEBUG (false) {} else
#else
#define IF_DEBUG
#endif
Вы можете использовать это так
Basic() {
simpleSetupCode;
// this should be a NOOP in release,
// but constructor could be inlined
IF_DEBUG printDebug(this);
}
, который уже гораздо более читабелен, чем
Basic() {
simpleSetupCode;
// this should be a NOOP in release,
// but constructor could be inlined
#if DEBUG
printDebug(this);
#endif
}
Обратите внимание, что вы можете использовать его как ключевое слово
IF_DEBUG {
printDebug(this);
printDebug(thas);
}