【问题标题】:How to suppress Solaris lint warning in C in the code如何在代码中抑制 C 中的 Solaris lint 警告
【发布时间】:2015-07-22 19:29:43
【问题描述】:

我需要能够在 C 代码的特定行上抑制 lint 警告,并且我想使用内联指令来做到这一点。这是针对我要移植到 64 位的大量遗留代码,我更愿意将指令放在代码中,而不是放在运行 lint 的 Makefile 中,因为后者非常晦涩。

问题在于 Solaris lint 文档仅针对少数几种警告类型指定了如何执行此操作(据我所知)。

过去,使用以下形式,Solaris 文档建议仍然允许这样做,但它似乎不起作用。使问题复杂化的是 Solaris lint 不提供错误编号,而是使用 E_CAST_INT_TO_SMALL_INT 等标识符。

这是旧方法(代码中已经有很多这样的方法):

/*line -e511*/

【问题讨论】:

  • 你试过/*line -eE_CAST_INT_TO_SMALL_INT */,只是用标识符代替错误号?
  • 想知道 OP 是否应该抑制这些警告。也许发布一个带有 OP 想要禁止的警告的代码示例?
  • @chux - 同意。在将旧代码移植到 64 位时,我认为 E_CAST_INT_TO_SMALL_INT 之类的 lint 警告正是 必须 修复的问题,尤其是当它们涉及 size_t 和/或指针代码时由“知道 size_t 是无符号整数”的人编写。这听起来太有可能了。
  • 我以前从未见过带有 Solaris lint 的 /* line -e511 */ 表单 - 你确定这些不是针对其他 lint 产品的吗?
  • 我尝试了 /*lint -e... 但它不起作用。当 /*lint -e*/ 起作用时,现有代码中有许多行来自古代历史。我正在抑制警告,因为特定的代码不会遇到需要超过 32 个的情况,但它是庞大代码库的一部分,不值得重写大量代码(可能会引入错误)来实现这一点警告自然消失。

标签: c solaris lint solaris-studio


【解决方案1】:

Described in Lint Directives Section at this link

有两种内联方法可以抑制单行代码的 lint 警告 - 旧方法和推荐的新方法。

旧方法是使用 LINTED 评论:/*LINTED*/

新方法是使用 lint 宏:NOTE(LINTED (msg))

新方式还需要包含note.h

【讨论】:

    猜你喜欢
    • 2016-12-24
    • 1970-01-01
    • 2021-02-12
    • 2019-01-09
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 2019-04-23
    • 2010-11-08
    相关资源
    最近更新 更多