不明な関数プロトタイプに関する Polyspace コンパイル エラーの修正
問題
コンパイル段階で、不明な関数プロトタイプに関する警告またはエラー メッセージが表示されます。
the prototype for function 'myfunc' is unknown
そのような関数のデータ型を特定するために、Polyspace は次の C99 規格に準拠しています。ISO/IEC 9899:1999, Chapter 6.5.2.2: Function calls
戻り値の型は
int
であると仮定されます。引数の数と型は関数の最初の呼び出しで決まります。たとえば、最初の呼び出しで関数が
double
型の引数を 1 つ受け取る場合、以降の呼び出しでもdouble
型の引数を 1 つ受け取ると仮定されます。以降の呼び出しでint
型の引数を渡すと、int
からdouble
への変換が行われます。
異なるコンパイル ユニットの間で引数の数と型や戻り値の型に不一致があると、リンク作成段階で検証が停止します。詳細については、異なる翻訳単位での競合する宣言に関する Polyspace リンク作成エラーの修正を参照してください。
原因
対象のソース コードに関数プロトタイプが含まれていません。たとえば、Polyspace で見つからないインクルード ファイルで関数が宣言されている場合などです。
ソース コードで #include
されたインクルード ファイルが Polyspace プロジェクトに追加されていない場合、事前の警告が表示されます。
Warning: could not find include file "my_include.h"
解決法
ソース リポジトリで関数宣言を検索します。
関数宣言がインクルード ファイルで見つかったら、そのインクルード ファイルを含むフォルダーを追加します。
Polyspace デスクトップ製品のユーザー インターフェイスで、このフォルダーをプロジェクトに追加します。
詳細については、ユーザー インターフェイスでの Polyspace の実行を参照してください。
コマンド ラインで、コマンド
polyspace-code-prover
にフラグ-I
を使用します。詳細は、
-I
を参照してください。