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

    Если система сборки использует различные стандарты для различных файлов, последующий анализ 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 - Ленг c - источники "file1.c,file2.c" - cpp-версия cpp11
Пример (Программа автоматического доказательства Кода): Polyspace Code Prover - Ленг c - источники "file1.c,file2.c" - cpp-версия cpp11
Пример (Сервер Bug Finder): сервер средства поиска ошибки полипробела - Ленг c - источники "file1.c,file2.c" - cpp-версия cpp11
Пример (Сервер Программы автоматического доказательства Кода): сервер программы автоматического доказательства полипробела кода - Ленг c - источники "file1.c,file2.c" - cpp-версия cpp11