C standard version (-c-version)

Задайте стандарт языка C, сопровождаемый в исходном коде

Описание

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

Установите опцию

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

Командная строка и файл опций: Используйте опцию -c-version. Смотрите информацию о командной строке.

Почему использование эта опция

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

Например, предположите, что вы используете булев тип данных _Bool в вашем коде. Этот тип задан в стандартном C99, но неизвестном в предшествующих стандартах, таких как C90. Если компиляция Polyspace следует стандарту C90, вы видите ошибки компиляции.

Некоторый MISRA C® правила отличаются на основе того, используете ли вы C90 или стандарт C99. Например, MISRA C C:2012 Правило 5.2 требует, чтобы идентификаторы в том же осциллографе и пространстве имен должны быть отличными. Если вы используете стандартные, различные идентификаторы C90, которые имеют тот же первый 31 символ, нарушают это правило. Если вы используете стандарт C99, количество символов увеличиваются до 63.

Настройки

Значение по умолчанию: defined-by-compiler

defined-by-compiler

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

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

c90

Анализ использует Стандарт C90 (ISO®/ IEC 9899:1990).

c99

Анализ использует Стандарт C99 (ISO/IEC 9899:1999).

c11

Анализ использует Стандарт C11 (ISO/IEC 9899:2011).

См. также Элементы Языка C11, Поддержанные в Polyspace.

c17

Анализ использует Стандарт C17 (ISO/IEC 9899:2018).

Эта версия обращается к дефектам в Стандарте C11, но не вводит новые функции языка. Значение __STDC_VERSION__ макрос увеличен до 201710L.

Зависимости

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

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

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

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

Параметр: -c-version
Значение: defined-by-compiler | c90 | c99 | c11 | c17
Значение по умолчанию: defined-by-compiler
Пример (Bug Finder): Polyspace Bug Finder - Ленг c - источники "file1.c,file2.c" - c-версия c90
Пример (Code Prover): Polyspace Code Prover - Ленг c - источники "file1.c,file2.c" - c-версия c90
Пример (Сервер Bug Finder): сервер средства поиска ошибки полипробела - Ленг c - источники "file1.c,file2.c" - c-версия c90
Пример (Сервер Code Prover): сервер программы автоматического доказательства полипробела кода - Ленг c - источники "file1.c,file2.c" - c-версия c90