Ensures() - 指南支持库
Ensures() - guideline support library
我想了解如何在代码中使用 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? Then if you check the gsl_assert.h
header file you will see that if GSL_TERMINATE_ON_CONTRACT_VIOLATION
is defined (which is default) then Ensures
will call std::terminate
会给您带来错误。
如果您希望抛出异常(包含文件和行号信息),那么您需要在包含 GSL 之前定义 GSL_THROW_ON_CONTRACT_VIOLATION
。
至于你是否正确使用了Ensures
,那么是的。
2021 年更新
GSL_TERMINATE_ON_CONTRACT_VIOLATION
被移除,总是调用 terminate()
.
我想了解如何在代码中使用 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? Then if you check the gsl_assert.h
header file you will see that if GSL_TERMINATE_ON_CONTRACT_VIOLATION
is defined (which is default) then Ensures
will call std::terminate
会给您带来错误。
如果您希望抛出异常(包含文件和行号信息),那么您需要在包含 GSL 之前定义 GSL_THROW_ON_CONTRACT_VIOLATION
。
至于你是否正确使用了Ensures
,那么是的。
2021 年更新
GSL_TERMINATE_ON_CONTRACT_VIOLATION
被移除,总是调用 terminate()
.