Coverity warning ::“cc”clobber被忽略为htons()和ntohs()

时间:2013-05-28 13:25:46

标签: c sockets coverity

为什么Coverity会产生警告

> "cc" clobber ignored

函数在下面提到的代码中调用htons()和ntohs()?

lSocketAddr.sin_port = htons(kUDPServerPort);

我用Google搜索并发现此警告也会出现在英特尔编译器链中。 “cc”clobber被忽略是什么意思?这是否意味着不应该将htons()和ntohs()用于安全编程?有什么解决方案可以解决警告吗?有没有其他apis htons()和ntohs()?

系统配置:

  1. Coverity 5.3
  2. RedHat 6
  3. GCC版本4.4.5

1 个答案:

答案 0 :(得分:0)

我认为这意味着该函数被标记为破坏处理器中conditions flags的函数,但此标记被忽略。

This commit到OpenViz显示添加了“cc”clobber,它是内联asm语句的参数,它看起来像这样:

asm("bsch %2,%0" : "=r"(bit) : "0"(0), "r"(x & -x) : "cc");
                                                      ^
                                                      |
                                                    hello!

不太确定为什么会产生警告,也许Coverity试图传达有问题的函数包含这样的asm,但它在分析中不能考虑“cc”信息?< / p>

我认为没有理由放弃基于此警告的功能,警告似乎相当“元”,不是关于代码本身,而是关于Coverity对代码的处理。

注意:我从未使用过Coverity。