【发布时间】:2018-07-26 02:12:58
【问题描述】:
我有一个带有 ANSI C 代码的 Visual Studio Windows 控制台应用程序。 main 函数定义类似于:
int main(void)
{
// do stuff
return 0;
}
但是,PC-Lint 报告 int 类型的以下消息
注释 970:在 typedef [MISRA] 之外使用修饰符或类型 int 2012 指令 4.6,建议]
我需要为 main 函数和 Note 970 保留 int 类型。因此,我想只为 main 函数定义禁止 Note 970。我不想在源代码上加上 //lint !e970。
我想知道是否可以仅在使用 PC-Lint 选项定义主函数时禁止显示此消息。
【问题讨论】:
-
感谢再次有机会在互联网上公开羞辱这个有缺陷的工具。几乎每个关于 Lint 的 MISRA 问题都带有“这是 Lint 中的错误”/“这是误报”的答案。也许如果我们足够羞辱他们,也许他们最终会直言不讳。我建议使用其他工具。
-
好吧,如果你想在 MISRA 中使用 PC-Lint,你必须在代码中添加一些 lint cmets。这是不可避免的。如果你有一个 main.c,你可以执行类似“lint-nt.exe -esym(970,int) main.c +esym(970,int) file1.c file2.c ...”之类的操作,但它显然可以不能很好地扩展。
标签: c c99 misra ansi-c pc-lint