我面临的情况是我需要通过cppcheck但有时会变得棘手.在这种情况下你通常做什么?例如.
#include<iostream>
using namespace std;
void fun1();
int fun2();
int main()
{
fun1();
}
void fun1()
{
int retVal;
if (-1 == (retVal = fun2()))
{
cout <<"Failure. fun2 returned a -1"<< endl;
}
}
int fun2()
{
return -1;
}
Run Code Online (Sandbox Code Playgroud)
我们通常会看到如上所述的代码.cppcheck上面的文件会给出如下输出 -
cppcheck --suppress = redundantAssignment --enable ='警告,样式,性能,可移植性' - inline-suppr --language ='c ++'retval_neverused.cpp检查retval_neverused.cpp ... [retval_neverused.cpp:13] :( style)变量'retVal'被赋予一个从未使用过的值.
我不想仅仅为了cppcheck添加一些虚拟行打印retVal.事实上,它可能是我抛出异常的情况,我不希望异常在其中具有一些微不足道的值作为retVal的值.
CppCheck虽然有点儿.你根本不需要retVal.只需fun2
直接检查返回值: if( -1 == fun2() )
顺便说一句,在条件表达式中分配变量实际上是不好的做法.它会让你更难找到你打算输入的拼写错误,==
但实际打字=
.