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()

您使用的是Microsoft GSL实现吗?然后,如果你检查gsl_assert.h头文件,你会发现如果定义了GSL_TERMINATE_ON_CONTRACT_VIOLATION(这是默认的),那么Ensures会调用std::terminate,这会给你得到的错误。

如果希望抛出异常(包含文件和行号信息),则需要在包含GSL之前定义GSL_THROW_ON_CONTRACT_VIOLATION

至于你是否正确使用Ensures,那么是的。


2021年更新

GSL_TERMINATE_ON_CONTRACT_VIOLATION被移除,总是调用terminate()

相关内容

  • 没有找到相关文章

最新更新