-compiler
)Задайте компилятор, который вы используете, чтобы создать ваш исходный код
Задайте компилятор, который вы используете, чтобы создать ваш исходный код.
Polyspace® полностью поддерживает наиболее распространенные компиляторы, используемые, чтобы разработать встраиваемые приложения. См. список ниже. Для этих компиляторов можно запустить анализ просто путем определения компилятора и целевого процессора. Для других компиляторов задайте generic
как имя компилятора. Если вы сталкиваетесь с ошибками компиляции, явным образом задаете специфичные для компилятора расширения, чтобы работать вокруг ошибок.
Пользовательский интерфейс (только десктопные решения): В вашей настройке проекта опция находится на узле Target & Compiler.
Командная строка: Используйте опцию -compiler
. Смотрите информацию о командной строке.
Polyspace использует эту информацию, чтобы интерпретировать синтаксис, который не является частью Стандарта C/C++, но прибывает из расширений языка.
Например, опция позволяет дополнительные ключевые слова языка, такие как sfr
, sbit
, и bit
. Если вы не задаете свой компилятор, эти дополнительные ключевые слова могут вызвать ошибки компиляции во время анализа Polyspace.
Polyspace на самом деле не вызывает ваш компилятор для компиляции. В частности:
Вы не можете задать флаги компилятора непосредственно в анализе Polyspace. Чтобы эмулировать ваши флаги компилятора, проследите свою команду сборки или вручную задайте эквивалентные аналитические опции Polyspace. Смотрите Задают Поведение Целевого окружения и Компилятора.
Программа автоматического доказательства кода имеет соединяющуюся политику, которая более строга, чем обычные компиляторы. Например, если ваш компилятор позволяет несоответствия объявления с определенными параметрами компилятора, вы не можете эмулировать эту политику соединения в Программе автоматического доказательства Кода. Смотрите Компиляцию Поиска и устранения неисправностей и Соединение Ошибок.
Значение по умолчанию: generic
generic
Анализ позволяет только стандартный синтаксис.
Стандарт языка определяется вашим выбором для следующих опций:
Если вы не задаете стандарт явным образом, стандарт зависит от вашего выбора компилятора.
gnu3.4
Анализ позволяет синтаксис GCC 3.4.
gnu4.6
Анализ позволяет синтаксис GCC 4.6.
gnu4.7
Анализ позволяет синтаксис GCC 4.7.
Для неподдерживаемых расширений GCC смотрите Ограничения.
gnu4.8
Анализ позволяет синтаксис GCC 4.8.
Для неподдерживаемых расширений GCC смотрите Ограничения.
gnu4.9
Анализ позволяет синтаксис GCC 4.9.
Для неподдерживаемых расширений GCC смотрите Ограничения.
gnu5.x
Анализ позволяет GCC 5.1, 5.2, 5.3, и 5,4 синтаксисов.
Если вы выбираете gnu5.x
, опция Target processor type (-target)
показывает только подмножество целей, которые позволены для базирующегося компилятора GCC. Для других целей используйте опцию Generic target options
.
Для неподдерживаемых расширений GCC смотрите Ограничения.
gnu6.x
Анализ позволяет GCC 6.1, 6.2, и 6,3 синтаксисов.
Если вы выбираете gnu6.x
, опция Target processor type (-target)
показывает только подмножество целей, которые позволены для базирующегося компилятора GCC. Для других целей используйте опцию Generic target options
.
Для неподдерживаемых расширений GCC смотрите Ограничения.
gnu7.x
Анализ позволяет GCC 7.1, 7.2, и 7,3 синтаксисов.
Если вы выбираете gnu7.x
, опция Target processor type (-target)
показывает только подмножество целей, которые позволены для базирующегося компилятора GCC. Для других целей используйте опцию Generic target options
.
Для неподдерживаемых расширений GCC смотрите Ограничения.
clang3.x
Анализ позволяет Лязг 3.5, 3.6, 3.7, 3.8, и 3,9 синтаксиса.
clang4.x
Анализ позволяет Лязг 4.0.0 и 4.0.1 синтаксиса.
clang5.x
Анализ позволяет Лязг 5.0.0 и 5.0.1 синтаксиса.
visual9.0
Анализ позволяет синтаксис Microsoft® Visual C ++® 2008.
visual10.0
Анализ позволяет Microsoft Visual C++ 2 010 синтаксисов.
Эта опция неявно включает опции -no-stl-stubs
.
visual11.0
Анализ позволяет Microsoft Visual C++ 2 012 синтаксисов.
Эта опция неявно включает опции -no-stl-stubs
.
visual12.0
Анализ позволяет Microsoft Visual C++ 2 013 синтаксисов.
Эта опция неявно включает опции -no-stl-stubs
.
visual14.0
Анализ позволяет Microsoft Visual C++ 2 015 синтаксисов (поддерживает Microsoft Visual Studio®update 2).
Эта опция неявно включает опции -no-stl-stubs
.
visual15.x
Анализ позволяет Microsoft Visual C++ 2 017 синтаксисов (поддерживает версии Microsoft Visual Studio 15.0 до 15,7).
Эта опция неявно включает опции -no-stl-stubs
.
keil
Анализ позволяет non-ANSI® Синтаксис C и семантику, сопоставленную с продуктами Keil™ от ARM (www.keil.com).
iar
Анализ позволяет Синтаксис C не-ANSI и семантику, сопоставленную с компиляторами от Систем IAR (www.iar.com).
armcc
Анализ позволяет Синтаксис C не-ANSI и семантику, сопоставленную с компилятором ARM® v5.
Если вы выбираете armcc
, в пользовательском интерфейсе десктопных решений Polyspace, опции Target processor type (-target)
показывает только цели, которые позволены для компилятора ARM v5. Смотрите ARM v5 Compiler (-compiler armcc)
.
armclang
Анализ позволяет Синтаксис C не-ANSI и семантику, сопоставленную с компилятором ARM v6.
Если вы выбираете armclang
, в пользовательском интерфейсе десктопных решений Polyspace, опции Target processor type (-target)
показывает только цели, которые позволены для компилятора ARM v6. Смотрите ARM v6 Compiler (-compiler armclang)
.
codewarrior
Анализ позволяет Синтаксис C не-ANSI и семантику, сопоставленную с компилятором NXP CodeWarrior®.
Если вы выбираете codewarrior
, в пользовательском интерфейсе десктопных решений Polyspace, опции Target processor type (-target)
показывает только цели, которые позволены для компилятора NXP CodeWarrior. Смотрите NXP CodeWarrior Compiler (-compiler codewarrior)
.
cosmic
Анализ позволяет Синтаксис C не-ANSI и семантику, сопоставленную с Космическим компилятором.
Если вы выбираете cosmic
, в пользовательском интерфейсе десктопных решений Polyspace, опции Target processor type (-target)
показывает только цели, которые позволены для Комического компилятора. Смотрите Cosmic Compiler (-compiler cosmic)
.
diab
Анализ позволяет Синтаксис C не-ANSI и семантику, сопоставленную с Ветром компилятор River® Diab.
Если вы выбираете diab
, в пользовательском интерфейсе десктопных решений Polyspace, опции Target processor type (-target)
показывает только цели, которые позволены для компилятора NXP CodeWarrior. Смотрите Diab Compiler (-compiler diab)
.
greenhills
Анализ позволяет Синтаксис C не-ANSI и семантику, сопоставленную с компилятором Green Hills®.
Если вы выбираете greenhills
, в пользовательском интерфейсе десктопных решений Polyspace, опции Target processor type (-target)
показывает только цели, которые позволены для компилятора Green Hills. Смотрите Green Hills Compiler (-compiler greenhills)
.
iar-ew
Анализ позволяет Синтаксис C не-ANSI и семантику, сопоставленную с IAR Встроенный компилятор Инструментальных средств.
Если вы выбираете iar-ew
, в пользовательском интерфейсе десктопных решений Polyspace, опции Target processor type (-target)
показывает только цели, которые позволены для IAR Встроенный компилятор Инструментальных средств. Смотрите IAR Embedded Workbench Compiler (-compiler iar-ew)
.
microchip
Анализ позволяет Синтаксис C не-ANSI и семантику, сопоставленную с компилятором C MPLAB XC8.
Если вы выбираете microchip
, в пользовательском интерфейсе десктопных решений Polyspace, опции Target processor type (-target)
показывает только цели, которые позволены для компилятора C MPLAB XC8. Смотрите MPLAB XC8 C Compiler (-compiler microchip)
.
renesas
Анализ позволяет Синтаксис C не-ANSI и семантику, сопоставленную с компилятором Renesas®.
Если вы выбираете renesas
, в пользовательском интерфейсе десктопных решений Polyspace, опции Target processor type (-target)
показывает только цели, которые позволены для компилятора Renesas. Смотрите Renesas Compiler (-compiler renesas)
.
tasking
Анализ позволяет Синтаксис C не-ANSI и семантику, сопоставленную с ОПРЕДЕЛЯЮЩИМ ЗАДАЧУ компилятором.
Если вы выбираете tasking
, в пользовательском интерфейсе десктопных решений Polyspace, опции Target processor type (-target)
показывает только цели, которые позволены для ОПРЕДЕЛЯЮЩЕГО ЗАДАЧУ компилятора. Смотрите TASKING Compiler (-compiler tasking)
.
ti
Анализ позволяет Синтаксис C не-ANSI и семантику, сопоставленную с Instruments™compiler Техаса.
Если вы выбираете ti
, в пользовательском интерфейсе десктопных решений Polyspace, опции Target processor type (-target)
показывает только цели, которые позволены для компилятора Texas Instruments. Смотрите Texas Instruments Compiler (-compiler ti)
.
cosmic
Анализ позволяет Синтаксис C не-ANSI и семантику, сопоставленную с компилятором, используемым в Космических инструментах разработки программного обеспечения.
Если вы выбираете cosmic
, в пользовательском интерфейсе десктопных решений Polyspace, опции Target processor type (-target)
показывает только цели, которые позволены для Космического компилятора.
Ваша спецификация компилятора определяет значения многих специфичные для компилятора макросы. В случае, если вы хотите знать, как Polyspace задает определенный макрос, используйте опцию -dump-preprocessing-info
.
Чтобы заменить макроопределение, используйте опцию Preprocessor definitions (-D)
.
Чтобы не задать макрос, используйте опцию Disabled preprocessor definitions (-U)
.
Если вы используете компилятор Visual Studio, необходимо использовать Target processor type (-target)
опция, которая устанавливает long long
к 64 битам. Совместимые цели включают: i386
, sparc
, m68k
, powerpc
, tms320c3x
, sharc21x61
, mpc5xx
, x86_64
, или mcpu
с long long
установите на 64 (-long-long-is-64bits
в командной строке).
Если вы используете опцию Check JSF AV C++ rules (-jsf-coding-rules)
, выберите компилятор generic
. Если вы используете другой компилятор, Polyspace не может проверять правила кодирования JSF®, которые требуют приспосабливания стандарту ISO. Например, Правило 8 AV: “Весь код должен соответствовать ISO/IEC 14882:2002 (E) стандартный C++”.
Polyspace не поддерживает определенные функции этих компиляторов:
Компиляторы GNU® (версия 4.7 или позже):
Вложенные функции.
Например, функциональный bar
вкладывается в функциональном foo
:
int foo (int a, int b) { int bar (int c) { return c * c; } return bar (a) + bar (b); }
Бинарные операции с типами векторов, где один операнд использует краткое обозначение для универсальных векторов.
Например, в операции сложения, 2+a
, 2 используется в качестве краткого обозначения для {2,2,2,2}.
typedef int v4si __attribute__ ((vector_size (16))); v4si res, a = {1,2,3,4}; res = 2 + a; /* means {2,2,2,2} + a */
Предописание параметров функции.
Например, параметр len
вперед объявляется:
void func (int len; char data[len][len], int len) { /* … */ }
Типы данных комплексного целого числа.
Однако комплексные типы данных с плавающей запятой поддерживаются.
Инициализация структур с членами массива с переменными границами, использующими список инициализаций.
Например, структура S
имеет член массива с переменными границами tab
. Переменная типа S
непосредственно инициализируется списком инициализаций.
struct S { int x; int tab[]; /* flexible array member - not supported */ }; struct S s = { 0, 1, 2} ;
s.tab[1]
.128-битные переменные.
Polyspace не может анализировать этот тип данных семантически. Средство поиска ошибки позволяет использование 128-битных типов данных, но Программа автоматического доказательства Кода показывает ошибку компиляции, если вы используете такой тип данных, например, дополнительный __float128
GCC.
Версия 7.x компиляторов GNU:
Имена типов _FloatN
и _FloatNx
семантически не поддерживаются. Анализ обрабатывает их как тип float
'double'
, или long double
.
Константы типа _FloatN
или _FloatNx
с суффиксами fN
, FN
, или fNx
, такой как 1.2f123
или 2.3F64x
не поддерживаются.
Компиляторы Visual Studio:
Ускоренный крупный параллелизм (AMP) C++.
AMP C++ является функцией Visual Studio, которая ускоряет ваше подписание Кода С++ для определенных типов параллельного данным оборудования на определенных целях. Вы обычно используете restrict
ключевое слово, чтобы активировать эту опцию.
void Buffer() restrict(amp) { ... }
__assume
операторы.
Вы обычно используете __assume
с условием, которое является ложным. Оператор указывает, что оптимизатор должен принять условие быть впредь верным. Программа автоматического доказательства кода не может согласовать это противоречие. Вы получаете ошибку:
Asked for compulsory presence of absent entity : assert
Управляемые Расширения для C++ (требуемый для Среды.NET), или ее преемник, C++ / CLI (C++, измененный для Общеязыковой инфраструктуры)
__declspec
ключевое слово с атрибутами кроме noreturn
, nothrow
, selectany
или thread
.
Параметр: -compiler |
Значение: generic | gnu3.4 | gnu4.6 | gnu4.7 | gnu4.8 | gnu4.9 | gnu5.x | gnu6.x | gnu7.x | clang3.x | clang4.x | clang5.x | visual9.0 | visual10.0 | visual11.0 | visual12.0 | visual14.0 | visual15.x | keil | iar | armcc | armclang | codewarrior | cosmic | diab | greenhills | iar-ew | microchip |renesas | tasking | ti |
Значение по умолчанию:
generic |
Пример 1 (Средство поиска Ошибки):
Polyspace Bug Finder - Ленг c - источники |
Пример 2 (Средство поиска Ошибки):
Polyspace Bug Finder - Ленг cpp - источники |
Пример 1 (Программа автоматического доказательства Кода):
Polyspace Code Prover - Ленг c - источники |
Пример 2 (Программа автоматического доказательства Кода):
Polyspace Code Prover - Ленг cpp - источники |
Пример 1 (Сервер Средства поиска Ошибки):
сервер средства поиска ошибки полипробела - Ленг c - источники |
Пример 2 (Сервер Средства поиска Ошибки):
сервер средства поиска ошибки полипробела - Ленг cpp - источники |
Пример 1 (Сервер Программы автоматического доказательства Кода):
сервер программы автоматического доказательства полипробела кода - Ленг c - источники |
Пример 2 (Сервер Программы автоматического доказательства Кода):
сервер программы автоматического доказательства полипробела кода - Ленг cpp - источники |