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

Проблема

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

Причина

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

Например, в следующем примере, директива #error достигнута, только если макросы __BORLANDC__, __VISUALC32__ или __GNUC__ не заданы. Если вы используете компилятор C GNU®, например, компилятор рассматривает макро-__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).