在返回类型为void的函数末尾是空白的return语句吗?

时间:2012-02-16 18:15:51

标签: c++ c gcc g++ gnu

关于SO的大多数问题都涉及非虚假的返回类型,但我们正在就此开展一场火焰战争,并希望了解社区的想法。

void DoSomething()
{
   return; // Is this needed?
}

this讨论看,具有未定义行为的问题似乎涉及非void返回类型的函数。 void返回类型是否具有相同的未定义行为,还是仅在非void返回函数中?

我担心的是,这最终将成为一种可怕的编码风格,而这种风格并不合理。但是,如果它也是void返回函数的未定义行为,那么我可以看到需要将它添加到编码标准中。如果C vs C ++的答案不同,那也没关系。

§6.6.3退货声明

  

2没有表达式的return语句只能用于   不返回值的函数,即带函数的函数   返回类型的void,contrsuctor(12.1)或析构函数(12.4)。

§6.6.3/ 2

  

离开函数的末尾是   相当于没有价值的回报;   这导致未定义的行为 in   价值回归功能。

3 个答案:

答案 0 :(得分:17)

没有;这是不需要的。

如果您想提前返回并跳过其余功能,则只需要编写return;

答案 1 :(得分:2)

你是对的,在一个没有早期突破的功能中永远不需要return;

答案 2 :(得分:-1)

回归是明确的。它表明作者清楚地明白没有回报的价值。

顺便说一下 - 应该只允许一次返回,但这是另一次讨论(所以不要在这里回答!!)。

此外,从代码维护的角度来看," 返回; "如果函数从void更改,则提供一个方便的位置来添加值。

留下来!目标不是看谁能用最少的行来编写函数。