メインコンテンツ

接頭辞なしの名前空間 std に関する Polyspace コンパイル エラーの修正

問題

Polyspace® 解析は次のようなエラー メッセージと共に停止します。

error: the global scope has no "modfl"
エラーで強調表示されている行は、std:: 接頭辞なしで標準ライブラリから関数を使用しています。

原因

コンパイラによっては、std:: 接頭辞を明示的に指定せずに標準ライブラリ名前空間のメンバーを使用することが認められています。そのようなコンパイラでは、コードに次のような行を含めることができます。

using ::mblen;
ここで、mblen は C++ 標準ライブラリのメンバーです。Polyspace コンパイルでは、そのようなメンバーをグローバル名前空間の一部と見なしてエラーを表示します。

解決法

標準ライブラリのメンバーは std:: 接頭辞で修飾することをお勧めします。たとえば、前述の例で関数 mblen を使用するには、その行を次のように書き換えます。

using std::mblen;

現在のコードを保持したまま Polyspace エラーを回避するには、解析オプション -using-std を使用します。解析を Polyspace ユーザー インターフェイスで実行している場合、このオプションを [その他] フィールドに入力します。[その他] を参照してください。