strncmp有副作用吗?

时间:2019-08-29 12:37:39

标签: c++

我有一个静态检查器,它抱怨在if条件下使用strncmp,说

Logical operation performed on expression with possible side effects.

strncmp是否有潜在的副作用,或者我可以将其视为假阳性吗?

if (strncmp(something1, pCurEntry->something2, sizeof(pCurEntry->something2)) == 0)

1 个答案:

答案 0 :(得分:1)

不允许

std::strncmp有副作用(例如,c样式的字符串通过const传递)。对于您提供的示例,您的静态分析器将发出错误消息。

但是好的静态分析器会“抱怨”类似的东西

(expression) ? n = strncmp(...) : 1

,因为它的副作用是仅在可能分支的子集上设置n。 (MISRA禁止这样做。)