函数结尾处的空白返回语句是否必须返回返回类型?

SwD*_*n81 3 c c++ gcc gnu g++

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

void DoSomething()
{
   return; // Is this needed?
}
Run Code Online (Sandbox Code Playgroud)

这个讨论中,看起来具有未定义行为的问题涉及非void返回类型的函数.void返回类型是否具有相同的未定义行为,还是仅在非void返回函数中?

我担心的是,这最终将成为一种不可靠的编码风格.但是,如果它也是void返回函数的未定义行为,那么我可以看到需要将它添加到编码标准中.如果对C和C++的答案不同,这也是可以的.

§6.6.3退货声明

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

§6.6.3/ 2

流出函数末尾相当于没有值的返回; 这会导致值返回函数中的未定义行为.

SLa*_*aks 17

没有; 这是不需要的.

return;如果您想提前返回并跳过函数的其余部分,则只需要编写.