接頭辞なしの名前空間 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 ユーザー インターフェイスで実行している場合、このオプションを [その他] フィールドに入力します。[その他]
を参照してください。