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

Logical operation performed on expression with possible side effects.


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

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

最佳答案

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

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

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


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

关于c++ - strncmp有副作用吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57710397/

10-09 01:35