如何解决与IAR Embedded Workbench ARM库头文件相关的问题,以便在IAR中成功运行PC Lint



当我在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标头。

最新更新