Если вы выбираете 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;
}