断言使用
断言信息打印
问题代码
int retVal1 = fun1();
int retVal2 = fun2();
assert(0 == retVal1 && 0 == retVal2);
问题分析
上述代码中,retValue返回函数执行的错误码。如果函数执行正确则返回0,否则返回相应的错误码。
该代码的问题在于如果发生断言之后,无法获得具体的错误原因。
改进方法
int retVal1 = fun1();
int retVal2 = fun2();
if(0 == retVal1 && 0 == retVal2)
{
printf("retVal1 = %d, retVal2 = %d", retVal1, retVal2);
assert(false);
}
加入打印信息之后可以方便后续问题的分析。
函数使用
返回值检查
很多时候,开发者会忘记检查函数的返回值,这种情况在新手身上尤其明显。这样代码的健壮性会很糟糕。
为了避免出现这种情况,应该强制检查所有函数的返回值,及时该函数返回的是void。这样有利于开发者养成良好的编程习惯。
对于返回void函数的检查可以在函数前加上(void)。
void fun()
{
std::cout << "Do nothing" << std::endl
}
void main()
{
(void)fun();
}