strncmp 有副作用吗?

Does strncmp have side effects?

本文关键字:副作用 strncmp      更新时间:2023-10-16

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

Logical operation performed on expression with possible side effects.

strncmp 是否有潜在的副作用,或者我可以将其视为误报而忽略吗?

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

不允许std::strncmp产生副作用(例如,const传递 c 样式字符串(。通过您提供的示例,您的静态分析器错误地发出了一条消息。

但是一个好的静态分析仪会"抱怨"类似的东西

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

因为它有一个副作用,即仅在可能的分支的子集上设置n。(MISRA不允许这样做。