c++ - strncmp 有副作用吗?
问题描述
我有一个静态检查器,它抱怨在 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 不允许这样做。)
推荐阅读
- angular - ng serve - 无法重新声明块范围变量“ngDevMode”
- c# - 具有实体框架和存储库模式的领域驱动设计
- php - 在 Woocommerce 中访问受保护的属性 WC_Product_Variation::$id
- reactjs - React - Material-UI Modal 导致 tabindex 出错
- javascript - 使元素显示在轮播上方
- php - Symfony4 - 如何更新学说 ArrayCollection ?
- node.js - Nodejs中带有“progress”模块的堆叠进度条
- amazon-web-services - 如何直接在s3上解压s3上的文件?
- html - 强制css中的高度
- netsuite - 如何通过 WSDL 更新 NetSuite Department isInactive?