Утверждения MFC
Обновлен: Ноябрь 2007
Этот раздел применим к:
Выпуск |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Экспресс-выпуск |
Только машинные коды |
|||
Standard |
Только машинные коды |
|||
Pro и Team |
Только машинные коды |
Обозначения:
Применяется |
|
Неприменимо |
|
Команда или команды скрытые по умолчанию. |
Для проверки утверждения MFC определяет макрос ASSERT. Так же для проверки внутреннего состояния объекта, производного от CObject, определяются MFC ASSERT_VALID и CObject::AssertValid.
MFC-макрос ASSERT останавливает выполнение программы и предупреждает пользователя, если аргумент (выражение) равно нулю или FALSE. Если выражение оценивается как ненулевое, выполнение продолжается.
Когда утверждение становится ложным, диалоговое окно сообщения отображает имя исходного файла и номер строки утверждения. Если в диалоговом окне выбрать "Повторить", обращение к AfxDebugBreak вызовет прерывание выполнения и остановит отладчик. В этот момент можно для определения причины ложности утверждения проверить стек вызовов и воспользоваться другими функциями отладчика. Если активизирована JIT-отладка, диалоговое окно может вызвать отладчик, если тот не был запущен в момент срабатывания утверждения.
Следующий пример показывает, как использовать ASSERT для проверки значения, возвращенного следующей функцией:
int x = SomeFunc(y);
ASSERT(x >= 0); // Assertion fails if x is negative
ASSERT можно применять с функциейIsKindOf, чтобы задать проверку типов аргументов функции:
ASSERT( pObject1->IsKindOf( RUNTIME_CLASS( CPerson ) ) );
Макрос ASSERT отслеживает программные ошибки только в отладочной версии программы. Этот макрос не создает никакого кода в окончательной версии. Если именно в окончательной версии нужно оценить выражение, вместо ASSERT следует применять макрос VERIFY.