解决 Polyspace 编译错误的全面指南
1. 通用编译器相关的 Polyspace 编译错误
在使用通用编译器时,可能会遇到分析因与非 ANSI C 关键字相关的错误消息而停止的问题。例如,使用 data 或 __attribute__((weak)) 等属性时,根据关键字的位置,错误消息会有所不同,像 data int tab[10]; 这行代码会导致 “expected a ‘;’” 的错误。
原因在于通用 Polyspace 编译器仅支持 ANSI C 关键字,若使用语言扩展,编译器会将其视为普通标识符。
解决方案如下:
- 使用 Compiler (-compiler) 选项指定编译器。
- 若编译器不被直接支持或并非基于受支持的编译器,可使用通用编译器。对于编译错误,可采取以下方法:
- 若关键字与内存建模相关,从预处理代码中移除。例如,移除 data 关键字,可在 Preprocessor definitions (-D) 选项中输入 data= 。
- 若关键字与属性相关,从预处理代码中移除属性。在 Preprocessor definitions (-D) 选项中输入 __attribute__(x)= 。例如,代码 void __attribute__ ((weak)) func(void); ,移除属性后,分析会将其视为
超级会员免费看
订阅专栏 解锁全文
1376

被折叠的 条评论
为什么被折叠?



