首页 > 解决方案 > strncmp 有副作用吗?

问题描述

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

Logical operation performed on expression with possible side effects.

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

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

标签: c++

解决方案


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

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

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

n因为它具有仅设置可能分支的子集的副作用。(MISRA 不允许这样做。)


推荐阅读