-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)
.
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)
.
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)
.
Если вы используете компилятор 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 | diab | greenhills | iar-ew | renesas | tasking | ti |
Значение по умолчанию:
generic |
Пример 1 (средство поиска ошибки):
|
Пример 2 (средство поиска ошибки):
|
Пример 1 (программа автоматического доказательства кода):
|
Пример 2 (программа автоматического доказательства кода):
|
Пример 1 (сервер средства поиска ошибки):
|
Пример 2 (сервер средства поиска ошибки):
|
Пример 1 (сервер программы автоматического доказательства кода):
|
Пример 2 (сервер программы автоматического доказательства кода):
|