Вопрос

В Windows/C++ я хочу настроить диалоговое окно утверждения так, чтобы оно всегда игнорировало утверждение, чтобы я мог быть более агрессивным с утверждениями.Я понимаю, как сложно написать правильный макрос Assert, и не хочу этого делать, просто подцепить код диалога.Есть ли простой способ (или краткий хак) сделать это?

статья о макроэкономических опасностях (гуглкэш)

обновлять:более агрессивный => используйте гораздо чаще и для предотвращения сбоев ошибки.Я хочу иметь возможность игнорировать утверждение навсегда, поэтому, если в цикле произойдет утверждение о незначительной ошибке, это не приведет к эффективной остановке моего процесса.

Это было полезно?

Решение

Посмотрите в_CrtSetReportHook функция или более новая _CrtSetReportHook2.Вы можете использовать его для установки перехватчика, который запоминает «просмотренные» сообщения и сообщает о них как об обработанных при повторном просмотре.

Другие советы

Если под «более агрессивным» вы подразумеваете использование утверждений для обработки ошибок, то вам лучше использовать исключения.

Следуйте учениям нашего встроенного мастера Миро Самек:

Исключение или ошибка?

Прокрутите вниз, чтобы настроить поведение утверждения.(Но обязательно прочитайте все остальное.)

Если код не должен быть потокобезопасным, и если вы хотите игнорировать утверждения только «навсегда» в том смысле, что они будут игнорироваться после первого раза каждый раз программа запускается, и не навсегда в том смысле, что вы игнорируете ее в первый раз, и после этого она больше никогда не запускается все программа запускается, а затем просто объедините проверку утверждения со статическим логическим значением, для которого по умолчанию установлено значение false.

void someFunc(...)
{
...
static bool bFireAssertion( false );

ASSERT( bFireAssertion || <your assertion test> );
...
}

затем, когда вы хотите, чтобы он прекратил срабатывание, установите для bFireAssertion значение true в отладчике.Поскольку это всегда будет правдой, ASSERT замкнется и больше никогда не будет оценивать ваш тест.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top