这会产生警告C4715:并非所有控制路径都返回一个值。
int f_no_default(bool true_or_false)
{
switch (true_or_false)
{
case (true) :
return 1;
case (false) :
return 0;
}
}
但是这会产生警告C4809:switch语句有冗余的'default'标签;所有可能的'案例'标签都给出了。
int f_with_default(bool true_or_false)
{
switch (true_or_false)
{
case (true) :
return 1;
case (false) :
return 0;
default:
return 0;
}
}
我该怎么办? (除了将警告视为错误之外)
Visual Studio 2013 V12.0
答案 0 :(得分:2)
我该怎么办? (除了将警告视为错误之外)
以下代码可能会修复它:
int f_no_default(bool true_or_false)
{
switch (true_or_false)
{
case (true) :
return 1;
case (false) :
return 0;
}
return 0; // <<<<<<<<<<<<<<<<<
}
这是一个愚蠢的警告,但静态分析功能取决于实际的编译器实现,警告消息的用处也是如此。
另一个选项(更符合您的函数名称)将抛出异常:
int f_no_default(bool true_or_false)
{
switch (true_or_false)
{
case (true) :
return 1;
case (false) :
return 0;
}
throw std::runtime_error("Unecpected value for 'true_or_false'");
}