Ошибка, связанная с #error Директива

Проблема

Анализ останавливается сообщением, содержащим #error директива. Например, появится следующее сообщение: #error directive: !Unsupported platform; stopping!.

Причина

Обычно вы используете #error директива в коде для запуска фатальной ошибки в случае, если определенные макросы не определены. Ваш компилятор неявно определяет макросы, поэтому ошибка не запускается, когда вы компилируете свой код. Однако Polyspace по умолчанию® компиляция не рассматривает макросы как определенные, поэтому происходит ошибка.

Например, в следующем примере #error директива достигается только в том случае, если макросы __BORLANDC__, __VISUALC32__ или __GNUC__ не заданы. Если вы используете GNU® Компилятор C, например, компилятор рассматривает макрос __GNUC__ как определено, и ошибка не возникает. Однако, если вы используете компиляцию Polyspace по умолчанию, она не рассматривает макросы как определенные.

#if defined(__BORLANDC__) || defined(__VISUALC32__) 
#define MYINT int 
#elif defined(__GNUC__) 
#define MYINT long 
#else
#error !Unsupported platform; stopping!
#endif

Решение

Для успешной компиляции выполните одно из следующих действий:

  • Задайте компилятор, такой как visual12.0 или gnu4.9. Установка компилятора задает некоторые флаги компиляции для анализа.

    Для получения дополнительной информации смотрите Compiler (-compiler).

  • Если доступные опции компилятора не совпадают с вашим компилятором, явным образом задайте один из флагов компиляции __BORLANDC__, __VISUALC32__, или __GNUC__.

    Для получения дополнительной информации смотрите Preprocessor definitions (-D).