web-dev-qa-db-ja.com

C ++ Expects演算子の使用方法

私は、C++を使用してプロジェクトを開始しています。これは、いくつかの学校プロジェクト以外ではこれまで使用したことがありません。現在取り組んでいることの範囲にはほど遠いものです。

私の目標は、エラーを回避し、パフォーマンスを向上させ、そして最も重要なことに、コードの保守性を向上させるために C++コアガイドライン に従って最善を尽くすことです。

私は文字通り数百の問題に遭遇してきましたが、g ++/Clang ++のバージョンが正しくない場合から、標準ライブラリが見つからない場合、間違ったバージョンを使用してg ++に至るまで、さまざまな問題があります。予想どおりに動作しない非常に基本的な関数へのコンパイルのためのC++の-そしてautotoolsを調べ始めていなかったため、さらに多くの頭痛の種が予想されます従います。

ただし、この質問はC++コアガイドラインの一部に固有のものです。 インターフェース6:前提条件を表すためにExpects()を優先する

次の簡単なコードを書いてみました。

#include <iostream>

using namespace std;

int square(int x) {
    Expects(x > 0);
    return x * x;
}

int main() {
    cout << square(3) << endl;
    return 0;
}

これにより、g ++でエラーが発生しました。

$> g++ -std=c++17 main.cpp
main.cpp: In function ‘int square(int)’:
main.cpp:7:2: error: ‘Expects’ was not declared in this scope
  Expects(x > 0);
  ^~~~~~~
-> [1]

Clangも使用してみましたが、まったく別の(そして無関係の)問題があります。

$> clang++ -x c++ main.cpp
main.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
         ^~~~~~~~~~
1 error generated.
-> [1]

まだ修正方法がわからないので、気になりません。

5
stevendesu

GSLとは別に、ExceptsC++20にも存在しますが、少し異なる構文でC++17には存在しません

1
lazlozerv