2015-01-20 5 views
5

Есть ли способ отключить утверждения вместо переключения в режим деблокирования. Мне нужно отлаживать код, который делает утверждения очень часто, и это замедляет мою работу. Эти утверждения не связаны с проблемой, которую я пытаюсь решить, поэтому пока они только замедляют мой прогресс, потому что их часто называют в одном из моих базовых классов. Теперь у меня нет времени, чтобы улучшить их дизайн, так что кто-то скажет мне, есть ли способ отключить утверждения, находясь в режиме отладки и используя его возможности.Как отключить ASSERT в режиме отладки в Visual Studio 2013

ответ

11

_CrtSetReportMode Пользователь

int iPrev = _CrtSetReportMode(_CRT_ASSERT,0); 
// Start Operation with no ASSERTs 
... 
// Restore previous mode with ASSERTs 
_CrtSetReportMode(_CRT_ASSERT,iPrev); 

Вместо 0, вы можете использовать только _CRTDBG_MODE_DEBUG.

1

#define NDEBUG до #include <assert.h> отключить assert макрос.

Вы можете добавить это в определение предварительного процессора в настройках проекта.

+0

Полезная информация, однако MFC 'ASSERT' - это не то же самое, что стандартная библиотека' assert' и управляется по-разному. – bames53

3

Вы можете использовать _set_error_mode или _CrtSetReportMode (см. Ответ xMRi), чтобы изменить метод отчетов об ошибках и избежать модального диалогового окна. Смотрите фрагмент кода там:

int main() 
{ 
    _set_error_mode(_OUT_TO_STDERR); 
    assert(2+2==5); 
} 

Также отметим, что утверждают, неудачи, как правило, по причине, и вы хотите исправить код, не просто подавить отчет. Удалив их из отладочных сборников полностью, вы просто ломаете хорошие вещи, созданные для вас.

Смежные вопросы