Если вы выбираете diab
для опции Compiler (-compiler)
Вы можете столкнуться с этой проблемой.
Во время Polyspace® анализ показывает ошибку, связанную с ключевым словом, характерным для компилятора Diab. Например, вы видите ошибку, связанную с restrict
ключевое слово.
Обычно для включения ключевого слова используется флаг компилятора. Анализ Polyspace не включает эти ключевые слова по умолчанию. Вы должны сделать Polyspace в курсе ваших флагов компилятора.
Анализ Polyspace не включает эти ключевые слова по умолчанию, чтобы предотвратить ошибки компиляции. Другой пользователь может не включить ключевое слово и вместо этого использовать имя ключевого слова в качестве обычного идентификатора. Если Polyspace рассматривает идентификатор как ключевое слово, произойдет ошибка компиляции.
Используйте опцию командной строки -compiler-parameter
в вашем анализе Polyspace следующим образом. Вы используете эту опцию командной строки, чтобы Polyspace знал о ваших флагах компилятора. В пользовательском интерфейсе десктопных продуктов Polyspace можно ввести опцию командной строки в поле Other
. Вы можете ввести опцию несколько раз.
Аргумент -compiler-parameter
зависит от ключевого слова, вызывающего ошибку. После включения ключевого слова не используйте имя ключевого слова в качестве обычного идентификатора. Например, после включения ключевого слова pixel
, не использовать pixel
как имя переменной. Оператор int pixel = 1
вызывает ошибку компиляции.
restrict
ключевое слово:
Обычно вы используете флаг компилятора -Xlibc-new
или -Xc-new
. Для анализа Polyspace используйте
-compiler-parameter -Xc-new
Следующий код не будет компилироваться с Polyspace, если вы не задаете флаг компилятора.
int sscanf(const char *restrict, const char *restrict, ...);
PowerPC AltiVec вектора расширения, такие как vector
type qualifier:
Обычно вы используете флаг компилятора -tPPCALLAV:
. Для анализа Polyspace используйте
-compiler-parameter -tPPCALLAV:
Следующий код не будет компилироваться с Polyspace, если вы не задаете флаг компилятора.
vector unsigned char vbyte; vector bool vbool; vector pixel vpx; int main(int argc, char** argv) { return 0; }
Расширенные ключевые слова, такие как pascal
, inline
, packed
, interrupt
, extended
, __X
, __Y
, vector
, pixel
, bool
и другие:
Обычно вы используете флаг компилятора -Xkeywords=
. Для анализа Polyspace используйте
-compiler-parameter -Xkeywords=0xFFFFFFFF
Следующий код не будет компилироваться с Polyspace, если вы не задаете флаг компилятора.
packed(4) struct s2_t { char b; int i; } s2; packed(4,2) struct s3_t { char b; } s3; int pascal foo = 4; int main(int argc, char** argv) { foo++; return 0; }