从函数返回更正确的方法是:
void function() {
// blah some code
}
Run Code Online (Sandbox Code Playgroud)
要么
void function() {
// blah some code
return;
}
Run Code Online (Sandbox Code Playgroud)
第二种方式的理由:
假设你有这样的场景 - 你有很多函数,你必须在这些函数的末尾注入一些代码.但由于某些原因,您不希望/或无法修改如此大量的功能.你能做些什么?Return
并macro
发挥作用,例如:
#include<stdio.h>
#define MAX_LINES 1000
#define XCAT(a,b) a##b
#define CAT(a,b) XCAT(a,b)
#define return returns[__LINE__] = 1;\
if (returns[__LINE__])\
{printf("End of function on %d line.\n",__LINE__);}\
int CAT(tmp,__LINE__); \
if ((CAT(tmp,__LINE__)=returns[__LINE__], returns[__LINE__] = 0, CAT(tmp,__LINE__)))\
return
static int returns[MAX_LINES];
void function1(void) {
return;
}
void function2(void) {
return;
}
int main()
{
function1();
function2();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Tev*_*o D 56
在void函数中返回的唯一原因是由于某些条件语句而提前退出:
void foo(int y)
{
if(y == 0) return;
// do stuff with y
}
Run Code Online (Sandbox Code Playgroud)
正如unwind所说:当代码结束时,它结束了.最后不需要明确的回报.
unw*_*ind 24
第一种方式是"更正确",有什么意图可以表达?如果代码结束,则结束.在我看来,这很清楚.
我不明白什么可能令人困惑,需要澄清.如果没有使用循环结构,那么除了函数停止执行之外还可能发生什么?
return
在一个void
函数结束时,我会对这样一个毫无意义的额外声明感到非常恼火,因为它显然没有任何意义,只是让我觉得原来的程序员说"我对此感到困惑,现在你也可以!" 这不是很好.