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 правильно, тогда да, вы.

Другие вопросы по тегам