【问题标题】:How to suppress PC-Lint Note 970 for int main(void) function?如何为 int main(void) 函数抑制 PC-Lint Note 970?
【发布时间】:2018-07-26 02:12:58
【问题描述】:

我有一个带有 ANSI C 代码的 Visual Studio Windows 控制台应用程序。 ma​​in 函数定义类似于:

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


【解决方案1】:

您的工具已损坏,向 PC Lint 报告错误。

引用 MISRA-C:2012 指令 4.6:

例外:

对于函数main,可以使用int 而不是typedefs 作为返回类型。因此int main (void) 是允许的。

【讨论】:

    猜你喜欢
    • 2018-03-16
    • 2016-01-05
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 2012-03-10
    • 2012-08-26
    相关资源
    最近更新 更多