Я хотел бы иметь возможность сделать что-то подобное с помощью визуального компилятора С++ (vc12):
// 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().
РЕДАКТИРОВАТЬ:
В ответ на несколько комментариев, объясняющих, почему я не хочу делать то, что хочу, я, возможно, должен переформулировать вопрос так: есть ли эквивалент gcc __optimize__
в cl?
!debugmode &&
, если этоtrue
, или удалит весь оператор if, если это выражениеfalse
. Вы не сможете надежно приземлиться в безопасном месте с таким флагом (если бы это было возможно). Лучше просто использоватьDebug
как условную компиляцию. - person Ajay   schedule 25.05.2016Debug
для меня бесполезен. Я знаю, что если бы существовало соответствующее определение препроцессора, я мог бы просто окружить операторif
ifdefs
для того же эффекта. Что я хочу сделать, так это переключаться между режимами отладки и профилирования с минимальными усилиями (т.е. наличие/O2
в строке компиляции), что было бы просто с использованием__optimize__
gcc, отсюда вопрос, было ли что-то подобное в cl. - person sji   schedule 25.05.2016