Ensures() - библиотека поддержки директив
Я пытаюсь понять, как использовать Ensures()
в коде. Как указано в примере, если я пытался использовать Ensures()
следующее...
int main(void)
{
int result = 0;
// Some calculation
Ensures(result == 255);
return 0;
}
Если result
переменная не равна 255
программа вылетает со следующим выводом "terminate called without an active exception"
, Мой вопрос как использовать Ensures()
должным образом?
1 ответ
Вы используете реализацию Microsoft GSL? Тогда, если вы проверите gsl_assert.h
Заголовок файла вы увидите, что если GSL_TERMINATE_ON_CONTRACT_VIOLATION
определяется (что по умолчанию), то Ensures
позвоню std::terminate
что даст вам ошибку, которую вы получите.
Если вы хотите, чтобы было сгенерировано исключение (с информацией о файле и номере строки), вам нужно определить GSL_THROW_ON_CONTRACT_VIOLATION
перед включением GSL.
Что касается, если вы используете Ensures
правильно, тогда да, вы.