【发布时间】: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