确保() - 指南支持库

时间:2016-04-01 06:33:07

标签: c++ c++11 cpp-core-guidelines 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()

1 个答案:

答案 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,那么你就是。