Код: Выделить всё
#define PI 3.1415926
Поэтому при отладке я избегаю следующего подхода:
Код: Выделить всё
#define _DEBUG
...
#ifdef _DEBUG
// debug code
#endif
...
Код: Выделить всё
const static bool DEBUG = true
int main()
{
...
if(DEBUG){ /* debug code*/ }
...
}
Я знаю, что накладные расходы на простой оператор if в значительной степени незначительны, но это не справедливо, когда он помещается глубоко в какой-либо вложенный оператор. циклы, которые выполняются большое количество раз (маленькие вещи складываются в большие).
Признает ли компилятор тот факт, что DEBUG является const static< /code> и жестко закодировать это в исполняемом файле, уже включая или отключая код отладки во время компиляции? Что заставляет меня подозревать это, так это то, что на днях, когда я работал над каким-то несвязанным кодом, компилятор предупредил меня о том, что некоторая часть кода устарела, потому что окружающий ее оператор if никогда не станет истинным (если я правильно помню) ).
Подробнее здесь: https://stackoverflow.com/questions/100 ... on-time-ov