宣言の不一致
関数または変数の宣言の間の不一致
説明
このチェッカーは、既定の Polyspace® as You Code 解析では非アクティブにされます。Polyspace as You Code 解析で非アクティブにされるチェッカー (Polyspace Access)を参照してください。
この欠陥は、関数または変数の宣言が、関数または変数の他のインスタンスと一致しない場合に発生します。
リスク
異なるコンパイル ユニット内の 2 つの変数宣言の間で不一致が発生する場合、標準的なリンカーはアルゴリズムに従って、その変数に対していずれかの宣言を選択します。リンカーが選択するものとは異なる変数宣言を想定している場合、その変数を使用するときに予期しない結果になる可能性があります。
同様の問題は、関数宣言の不一致により発生することもあります。
修正方法
修正方法は宣言の不一致のタイプによって異なります。どちらの宣言も実際には同じオブジェクトのことを指している場合は、同じ宣言を使用します。それらの宣言が異なるオブジェクトのことを指している場合は、いずれかの変数の名前を変更します。変数名を変更する場合、必ずその変数を使用しているすべての場所で変更してください。
宣言が以前のプリプロセッサ命令の影響を受けているため、宣言の不一致が発生する可能性があります。たとえば、マクロ内で宣言が行われ、あるインクルード パスではそのマクロが定義され、別のインクルード パスでは未定義であることがあります。このような宣言の不一致はデバッグするのが困難な場合があります。2 つのインクルード パス間の相違を特定し、競合するマクロ定義を修正します。
問題を修正しない場合は、改めてレビューされないように結果またはコードにコメントを追加します。詳細は、以下を参照してください。
Polyspace ユーザー インターフェイスでのバグ修正または正当化による結果への対処 (Polyspace ユーザー インターフェイスで結果をレビューする場合)。
Polyspace Access でのバグ修正または正当化による結果への対処 (Polyspace Access) (Web ブラウザーで結果をレビューする場合)。
コードへの注釈付けと既知の結果または許容可能な結果の非表示 (IDE で結果をレビューする場合)
例
結果情報
グループ: プログラミング |
言語: C | C++ |
既定値: オン |
コマンド ライン構文: DECL_MISMATCH |
影響度: High |