Ошибки, связанные с универсальным компилятором

Если вы используете универсальный компилятор, можно столкнуться с этой проблемой. Для получения дополнительной информации смотрите Compiler (-compiler).

Проблема

Анализ останавливается с сообщением об ошибке, связанным с не-ANSI® Ключевое слово C, например data или такие атрибуты, как __attribute__((weak)).

В зависимости от местоположения ключевого слова, сообщение об ошибке может варьироваться. Например, эта линия вызывает сообщение об ошибке: expected a ";".

data int tab[10];

Причина

Типовой Polyspace® компилятор поддерживает только ключевые слова ANSI C. Если вы используете расширение языка, универсальный компилятор не распознает его и рассматривает ключевое слово как обычный идентификатор.

Решение

Укажите компилятор при помощи опции Compiler (-compiler).

Если компилятор не поддерживается напрямую или не основан на поддерживаемом компиляторе, можно использовать универсальный компилятор. Чтобы обойти ошибки компиляции:

  • Если ключевое слово связано с моделированием памяти, удалите его из предварительно обработанного кода. Например, чтобы удалить data ключевое слово, введите data= для опции Preprocessor definitions (-D).

  • Если ключевое слово связано с атрибутом, удалите атрибуты из предварительно обработанного кода. Введите __attribute__(x)= для опции Preprocessor definitions (-D).

    Если ваш код имеет эту линию:

    void __attribute__ ((weak)) func(void);
    И вы удаляете атрибуты, анализ читает линию как:
    void func(void);

При использовании этих обходных путей исходный код не изменяется.