错误"value computed is not used"警告
False "value computed is not used" warning
我用下面的函数维护了一些丑陋的遗留代码,我得到了
warning: value computed is not used
对于以下注释标记的行:
void ReadKeyValuePipe(char* buffer, char* key, char* value) {
char* pos;
char key_str[1024];
char* val = value;
sprintf(key_str,"%s:",key);
if((pos = strstr(buffer,key))) {
pos += strlen(key_str);
while (*pos && *pos != '|') {
*val = *pos;
*val++; // this is actually used
*pos++; // so is this
}
*val = 0;
}
}
当我删除这些行时,代码就会中断。这是有道理的,因为它们看起来是递增的标记。
如何让编译器识别出这些计算是实际使用的?
您正在取消引用val
和pos
,然后对它们进行递增,但从未使用取消引用的结果。您可以将这些行替换为:
*val = *pos;
++val;
++pos;
或者,可能是有人"修复"它之前的代码:
*val++ = *pos++;
如果您确信您的代码是正确的,则可以使用-Wno-unused-value
编译器选项。事实并非如此,因为您显然不知道*val++;
的作用。
*val++;
*pos++;
与相同
val++;
pos++;
相关文章:
- 警告处理为错误这里有什么问题
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- cppcheck在const std::string[]上引发警告
- GCC对可能有效的代码抛出init list生存期警告
- 如何在BST的这个简单递归实现中消除警告
- 关于std::move的使用,是否有编译警告
- g++ 在某个类成员未初始化时不发出警告
- 如何处理来自核心指南检查器的关于gsl::at的静态分析警告
- 使用typeid警告未使用的变量
- 示例C++项目编译中的警告
- 警告:在函数返回类型 [-Wignore 限定符] 时忽略类型限定符
- C++ - 在我尝试制作一个简单的计算器时有一个"uninitialized local variable y used"警告
- 修复警告"field a is not used"如果字段在配置中未使用的好方法
- "used after it was moved [bugprone-use-after-move]"警告在这里是一个真正的问题吗?
- 摆脱编译器警告"warning: result of call is not used"
- GCC - 删除"is used uninitialized in this function"警告
- 海湾合作委员会警告"set but not used "
- 错误"value computed is not used"警告
- 如何绕过警告"rvalue used as lvalue"?
- 共享公共对象 - 警告"defined but not used"