exponenta event banner

Стандартная версия C++ (-cpp-version)

Укажите стандарт языка C++, следующий в исходном коде

Описание

Укажите стандарт языка C++, которому следует исходный код.

Задать опцию

Пользовательский интерфейс (только для настольных ПК): в конфигурации проекта этот параметр находится в узле Target & Compiler. Другие параметры, которые необходимо включить, см. в разделе Зависимости.

файл командной строки и параметров: Использовать параметр -cpp-version. См. раздел Сведения о командной строке.

Зачем использовать этот параметр

Используйте этот параметр, чтобы программа Polyspace ® разрешала функции определенной версии стандарта языка C++ во время компиляции. Например, при компиляции с использованием флага GCC -std=c++11 или -std=gnu++11, указать cpp11 для этого варианта. Если вы не уверены в языковом стандарте, укажите defined-by-compiler.

Например, предположим, что используется диапазон for петли. Этот тип for цикл определен в стандарте C++ 11, но неизвестен в предыдущих стандартах, таких как C++ 03. Если компиляция Polyspace использует стандарт C++ 03, можно увидеть ошибки компиляции.

Чтобы проверить, допускает ли компилятор функции, специфичные для стандарта, скомпилируйте код с макросами, специфичными для стандарта, с помощью стандартных параметров компилятора. Например, чтобы проверить особенности C++ 11, скомпилируйте этот код. Код содержит ключевое слово, зависящее от C++ 11nullptr. Если макрос __cplusplus не является 201103L (указывая на C++ 11), это ключевое слово используется и вызывает ошибку компиляции.

#if defined(__cplusplus) && __cplusplus >= 201103L
    /* C++11 compiler */
#else
    void* ptr = nullptr;
#endif
Если код компилируется, используйте cpp11 для этого варианта.

Настройки

По умолчанию: defined-by-compiler

defined-by-compiler

В анализе используется стандарт, основанный на спецификации для Compiler (-compiler).

См. Стандарт языка C/C + +, используемый в анализе пространства.

cpp03

В анализе используется стандарт C++ 03 (ISO ®/IEC 14882:2003).

cpp11

В анализе используется стандарт C++ 11 (ISO/IEC 14882:2011).

cpp14

В анализе используется стандарт C++ 14 (ISO/IEC 14882:2014).

cpp17

В анализе используется стандарт C++ 17 (ISO/IEC 14882:2017).

Зависимости

  • Эта опция доступна только при установке Source code language (-lang) кому CPP или C-CPP.

  • При создании проекта или файла параметров из системы построения с помощью polyspace-configure команда или polyspaceConfigure значение этой опции автоматически определяется из системы сборки.

    Если система сборки использует различные стандарты для различных файлов, последующий анализ Polyspace может эмулировать систему сборки и использовать различные стандарты для компиляции этих файлов. При открытии такого проекта в интерфейсе пользователя Polyspace значение опции отображается как defined-by-compiler. Однако вместо одного стандарта Polyspace использует несколько стандартов для компиляции файлов. В анализе используется скрытая опция -options-for-sources для связывания различных стандартов с различными файлами.

Информация командной строки

Параметр: -cpp-version
Значение: defined-by-compiler | cpp03 | cpp11 | cpp14 | cpp17
По умолчанию: defined-by-compiler
Пример (поиск ошибок): polyspace-bug-finder -lang c -sources "file1.c,file2.c" -cpp-version cpp11
Пример (проверка кода): polyspace-code-prover -lang c -sources "file1.c,file2.c" -cpp-version cpp11
Пример (сервер поиска ошибок): polyspace-bug-finder-server -lang c -sources "file1.c,file2.c" -cpp-version cpp11
Пример (сервер проверки кода): polyspace-code-prover-server -lang c -sources "file1.c,file2.c" -cpp-version cpp11