Я хотел бы быть в состоянии сделать что-то вроде этого с помощью Visual C++ компилятор (VC12):Есть Visual C++ предопределенный макрос препроцессора, который позволяет узнать, когда компилятор оптимизирует
// If we have compiled with O2
#ifdef _O2_FLAG_
bool debug_mode = false;
// If we are in dirty slow non optimized land
#else
bool debug_mode = true;
#endif
Но я не могу найти предопределенный макрос для этой цели.
Контекст:
Флаг DEBUG_MODE используется как:
if (!debug_mode && search_timer->seconds_elapsed() > 20) {
return best_result_so_far;
}
Проблема в том, что в случае отладки, что я шаг через это постоянно терпит неудачу и бомбы меня, потому что странно это берет меня намного больше времени, чтобы пройти через код, чем процессор обычно проходит через него :-)
Если есть некоторые базовые часы, которые приостанавливаются при отладке, это также решит мою проблему. В настоящее время я использую разницу между двумя вызовами в std :: chrono :: high_res_clock :: now().
EDIT:
В ответ на несколько замечаний, объясняющих, почему я не хочу делать то, что я хочу делать, я, возможно, следует перефразировать вопрос, как просто: Есть ли эквивалент ССЗ __optimize__
в п?
Даже если это действительно существовало, препроцессор не может сказать вам, что компилятор * будет * оптимизировать блок перевода (скажем, если оптимизация не может быть выполнена), только то, что он * может * – StoryTeller
Вы собираетесь сделать это неправильно путь. Вам необходимо улучшить свои навыки отладки (например, использовать точки трассировки вместо точек останова и т. Д.). – IInspectable
Используйте переключатель компилятора, чтобы проверить режим отладки. Практически каждый IDE имеет возможность устанавливать режим отладки и выпуска с различными параметрами компилятора. – Lundin