exponenta event banner

Ошибки при использовании пространства имен std Без префикса

Проблема

Анализ Polyspace ® останавливается с сообщением об ошибке, например:

error: the global scope has no "modfl"
Выделенная в ошибке строка использует функцию из стандартной библиотеки без std:: префикс.

Причина

Некоторые компиляторы позволяют использовать элементы стандартного пространства имен библиотеки без явного указания std:: префикс. Для таких компиляторов код может содержать такие строки:

using ::mblen;
где mblen является членом стандартной библиотеки C++. Компиляция Polyspace рассматривает члены как часть глобального пространства имен и показывает ошибку.

Решение

Это хорошая практика, чтобы квалифицировать членов стандартной библиотеки с std:: префикс. Например, для использования mblen в предыдущем примере перезаписать строку следующим образом:

using std::mblen;

Чтобы сохранить текущий код и обойти ошибку Polyspace, используйте опцию анализа -using-std. Если анализ выполняется в интерфейсе пользователя Polyspace, введите опцию в поле Другое (Other). Посмотрите Other.