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