修复与 #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.0
或gnu4.9
。指定编译器可为分析定义部分编译标记。有关详细信息,请参阅
编译器 (-compiler)
。如果可用的编译器选项与您的编译器不匹配,请显式定义一个编译标记
__BORLANDC__
、__VISUALC32__
或__GNUC__
。有关详细信息,请参阅
预处理器定义 (-D)
。