这将产生警告C4715:并非所有控件路径都返回值。
int f_no_default(bool true_or_false)
{
switch (true_or_false)
{
case (true) :
return 1;
case (false) :
return 0;
}
}但是这会产生警告C4809:开关语句有多余的‘默认’标签;所有可能的'case‘标签都给出了。
int f_with_default(bool true_or_false)
{
switch (true_or_false)
{
case (true) :
return 1;
case (false) :
return 0;
default:
return 0;
}
}我能做什么?(除关闭外,请将警告视为错误)
2013 V12.0
发布于 2016-05-11 20:33:00
我能做什么?(除关闭外,请将警告视为错误)
下面的代码可能会修复它:
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'");
}https://stackoverflow.com/questions/37172698
复制相似问题