当我在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配置文件中选择了这个编译器版本。
IAR编译器在内部定义了各种预处理器符号(如__IAR_SYTEMS_ICC
(,而PC Lint在您的设置中并不知道这些符号。幸运的是,您可以指示IAR编译器使用命令行选项--predef_macros iar_symbols.h
生成一个包含所有这些符号的文件。您可以在Project > Options > Compiler > Extra Options
下的任何Embedded Workbench项目中添加此选项。编译项目后,将生成文件iar_symbols.h
。之后,您可以再次从项目中删除--predef_macros
选项。
现在,您需要通过在PC Lint命令行中添加选项-header(iar_symbols.h)
来指示PC Lint读取生成的文件。这应该可以解决您的问题。
请注意,预定义符号的列表取决于所使用的编译器版本。如果对不同的项目使用不同的IAR编译器版本,则应为每个编译器版本生成一个iar_symbols.h
标头。