在void C/C++例程结束时添加return语句有什么意义?

dub*_*nde 4 c c++

我看到签名中带有void返回的函数/方法在函数末尾有一个return语句.这是什么原因,这是否适用于其他语言?

据我所知,如果我想退出函数的末尾,我可以使用return.

AC示例:

void function(void)
{
   int x = 1 + 2;

   return;    // what do we need this for, if at all?
}
Run Code Online (Sandbox Code Playgroud)

Aam*_*mir 23

这在这里似乎毫无意义.但我的猜测是,这种事情可以用来在IDE中设置一个断点,它不支持在闭括号处设置断点,并在此处设置断点,可以在监视窗口等中检查一些值.

  • 它对断点没有帮助(你可以尝试一下).从void函数返回没有生成真正的代码.并非每个关键字都转移到代码中. (3认同)
  • 你有一个好点!虽然,我认为在做这样的事情时,必须在调试时清理make-debugger-happy剩余代码. (2认同)

Pet*_*ham 16

有人在字面上采用了"一个函数必须有一个单一的返回"编码指南.


Bri*_*eal 7

对于返回void的函数,它没关系,因为void函数的"从结尾处掉落"只是按照您的预期返回.

然而,有些人喜欢这样做以帮助将来的维护.例如,如果有人后来决定将函数的返回类型更改为int,那么如果忘记更改最终的return语句以使其返回int值,则应该得到编译器错误.如果你根本没有返回语句,返回值是未定义的,许多较旧的编译器都不会警告你(这是真的 - 我已经看过了!).现在这不是什么大问题,因为大多数现代编译器会警告这些事情.


syk*_*ora 5

我总是在函数结束时包含一个return语句,即使它们没有返回任何内容.我最初的理由是我是明确的,没有关于函数结束的模糊性,我总是被"走出尽头"的函数所困扰.之后,这只是一种习惯,很难打破(如果我想).