我有一个静态检查器,它抱怨在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/