我想了解如何在代码中使用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()
?
答案 0 :(得分:10)
您使用的是Microsoft GSL implementation吗?然后,如果您选中the gsl_assert.h
header file,则会看到如果var test = "SC129h";
var matches = 0;
for(var i = 0; i < test.length; i++) {
if((test[i] >= 'a' && test[i] <= 'z') || (test[i] >= 'A' && test[i] <= 'Z')) {
matches++;
if(matches > 2) break;
}
}
if(matches >= 2) {
// Do something here
}
已定义(默认设置为GSL_TERMINATE_ON_CONTRACT_VIOLATION
,则Ensures
会调用std::terminate
,这会给您带来错误。
如果要抛出异常(包含文件和行号信息),则需要在包含GSL之前定义GSL_THROW_ON_CONTRACT_VIOLATION
。
至于你是否正确使用Ensures
,那么你就是。