0

複数の関数を含む ac ファイルがあり、(gcc を使用して) 前処理されたバージョンのプログラムで z3 ソルバーを使用して cbmc を実行したい場合、ヘッダー セクションに他のファイル (c ファイル) がいくつかあります。cbmc はこれらのファイルをどのように認識しますか? 私はそれを実行しようとしましたが、彼はいくつかの変数について、それがどこにあるか宣言されていないというエラーを出しました。実際、それらはヘッダーファイルの1つで宣言されています。

誰かがこれがどのように機能するか説明できますか?

アップデート:

int test(int x) {
for (int i = 2; i < sqrt(x); i++) {
    if (x%i == 0)
        return 0;
}

まず、gcc を使用してプログラムを前処理します。

次に、pycparser でプログラムを解析します

次に、計器 (4 の後に print ステートメントを追加して、x の値を確認します)

次に、インストルメント化されたバージョンのファイルで cbmc を実行したところ、次のエラーが発生しました: 関数 `sqrt' は宣言されていません

4

1 に答える 1

0

ヘッダー ファイルによって参照されるすべてのファイルをプロジェクトに含める必要があります。関連する .c ファイルが利用できない場合、適切なヘッダーだけを含めるだけでは十分ではありません。


サンプル コードには、次の行も含める必要があります。

    else
    {
        return 1;
    }
}
于 2019-06-25T09:00:36.180 に答える