8

コードでの使用方法を理解しようとしてEnsures()います。にあるように、次のように使用してみるとEnsures()...

int main(void)
{
    int result = 0;
    // Some calculation
    Ensures(result == 255);
    return 0;
}

result変数が と等しくない場合、255プログラムは次の出力でクラッシュします"terminate called without an active exception"。私の質問は、Ensures()適切に使用する方法ですか?

4

1 に答える 1

12

Microsoft GSL 実装を使用していますか? 次に、ヘッダー ファイルを確認するgsl_assert.h、 ifGSL_TERMINATE_ON_CONTRACT_VIOLATIONが定義されていることがわかります (これがデフォルトです)Ensuresが呼び出さstd::terminateれ、エラーが発生します。

例外を (ファイルと行番号の情報と共に) スローしたい場合はGSL_THROW_ON_CONTRACT_VIOLATION、GSL を含める前に定義する必要があります。

適切に使用してEnsuresいる場合は、そうです。


2021 年の更新情報

GSL_TERMINATE_ON_CONTRACT_VIOLATIONは削除され、常に が呼び出されterminate()ます。

于 2016-04-01T06:48:59.977 に答える