exponenta event banner

Ошибка, связанная с #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).