c语言 让函数返回到上一级 和 直接返回到主函数 分别应该用什么语句?

2025-02-26 13:22:31
推荐回答(3个)
回答1:

函数返回上一级使用return语句就行了。
c标准库里有一套函数:setjmp/longjmp ,程序员可以在任意位置调用setjmp保存现场,然后在任意另外位置调用longjmp跳到那个保存的现场。这样就可以满足直接调回主函数的需求,但这套函数保存现场并不充分,而且打破正常流程控制,很不稳定,一般来所不推荐使用。

回答2:

直接跳回一个地方
C用setjmp, longjmp
C++则用try catch throw的异常处理机制
return则返回调用的函数

举一个C++的例子,函数从funcB直接返回了主函数main:
int funcA()
{
int a;
funcB();

//之后的语句都不会执行
a = 1;
a *= 2;
return a;
}

void funcB()
{
throw int(0);
}

int main()
{
int r = 0;
try
{
r = funcA();
}
catch (...)
{
// 该程序直接跳到这里
// r仍然等于0
}

return 0;
}

回答3:

返回到上一级用:go语句、返回到主函数用:return语句。