我想了解如何在代码中使用 Ensures()
。正如 example 中给出的那样,如果我尝试使用 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 implementation ?那么如果你检查 the gsl_assert.h
header file您会看到,如果定义了 GSL_TERMINATE_ON_CONTRACT_VIOLATION
(这是默认设置),则 Ensures
将调用 std::terminate
这会给你你得到的错误。
如果您希望抛出异常(包含文件和行号信息),那么您需要在包含 GSL 之前定义 GSL_THROW_ON_CONTRACT_VIOLATION
。
至于你是否正确地使用了 Ensures
,那么是的。
2021 年更新
GSL_TERMINATE_ON_CONTRACT_VIOLATION
已删除,始终调用 terminate()
。
关于c++ - Ensures() - 指南支持库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36349523/