我的生产代码是在具有一些语言扩展的专有编译器上编译的,例如:
__even_in_range(TA2IV, TA2IV_TAIFG);
但我使用clang作为代码分析工具,并收到此错误error: use of undeclared identifier '__even_in_range'
。还有一些语言扩展可以产生类似的行为。有没有办法让clang忽略某些标识符?
编辑: 这两条评论都引导我去定义解决方案,所以我将这些编译器选项添加到代码分析包中(我使用https://github.com/lvzixun/Clang-Complete包)。
-D __even_in_range(y,x)=y
-D __interrupt=
这样,我的所有来源都不受静态分析工具的影响
...谢谢
答案 0 :(得分:1)
您可以使用预定义的宏__clang_analyzer__
来识别分析仪正在运行,在这种情况下只需#define
出这些扩展名:
#ifdef __clang_analyzer__
#define __even_in_range(...)
...
#endif
详情here,以及摆脱误报的其他想法。