C++ standard version (-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++ 11 nullptr. Если макрос __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 + +, используемый в анализе Polyspace.

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 function, значение этой опции автоматически определяется из вашей системы сборки.

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

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

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