Стандартная версия 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++ специфичное для 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).

Зависимости

  • Эта опция доступна, только если вы устанавливаете 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
Значение по умолчанию: 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