0

当我在 IAR Workbench 上的代码上运行 PC-Lint 时,它与yvals.h我在下面包含的库头文件中存在的代码片段冲突,然后 PC-Lint 停止工作。

/* IAR compiler version check */
#if (__IAR_SYSTEMS_ICC__ < 9) || (__IAR_SYSTEMS_ICC__ > 9)
  #error "DLib compiled with wrong (version of IAR) compiler"
#endif

我使用的 IAR 编译器版本是co-iar.lnt. 我从 PC-Lint 配置文件中选择了这个编译器版本。

4

1 回答 1

0

IAR 编译器在内部定义__IAR_SYTEMS_ICC了 PC-Lint 在您的设置中不知道的各种预处理器符号(如 )。幸运的是,您可以使用命令行选项指示 IAR 编译器生成包含所有这些符号的文件--predef_macros iar_symbols.h。您可以在任何 Embedded Workbench 项目中添加此选项Project > Options > Compiler > Extra Options。编译项目后,将iar_symbols.h生成文件。之后,您可以再次从项目中删除该--predef_macros选项。

现在您需要通过将选项添加-header(iar_symbols.h)到您的 PC-Lint 命令行来指示 PC-Lint 读取生成的文件。这应该可以解决您的问题。

请注意,预定义符号列表取决于使用的编译器版本。如果您为不同的项目使用不同的 IAR 编译器版本,您应该iar_symbols.h为每个编译器版本生成一个头文件。

于 2021-03-30T20:09:53.713 回答