主要内容

修复与 #error 指令相关的 Polyspace 编译错误

问题

分析在包含 #error 指令的消息处停止。例如,会显示以下消息:#error directive: !Unsupported platform; stopping!

原因

您通常会在代码中使用 #error 指令,以在某些宏未定义时触发致命错误。您的编译器会隐式定义这些宏,因此在编译代码时不会触发错误。然而,默认的 Polyspace® 编译并未将这些宏视为已定义,因此会引发错误。

例如,在下面的示例中,只有当宏 __BORLANDC____VISUALC32____GNUC__ 未定义时,才会执行 #error 指令。例如,如果您使用的是 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.0gnu4.9。指定编译器可为分析定义部分编译标记。

    有关详细信息,请参阅编译器 (-compiler)

  • 如果可用的编译器选项与您的编译器不匹配,请显式定义一个编译标记 __BORLANDC____VISUALC32____GNUC__

    有关详细信息,请参阅预处理器定义 (-D)