我想知道 C/C++ 中的一般主题。假设我们正在执行一个调用函数 B() 的函数 A(),我们能否确定在 A() 中对 B() 的调用总是会在调用本身“之后”返回。
在一个更一般的问题中,退出功能的可能性有哪些?
C 关键字是(维基百科):auto、break、case、char、const (C89)、continue、default、do、double、else、enum (C89)、extern、float、for、goto、if、inline (C99) , int, long, register, restrict (C99), return, short, signed (C89), sizeof, static, struct, switch, typedef, union, unsigned, void (C89), volatile (C89), while, _Bool (C99 )、_Complex (C99)、_Imaginary (C99)。
据我所知,这个主题中有趣的一个是:
- break/continue:在循环或开关中使用(正如我在尝试后被 GCC 告知的那样),它们无法退出函数。
- goto:标签的范围受函数限制,因此 goto 不能退出函数
- return:可以退出函数,但总是返回到调用后的指令。我们对这个很安全。
- exit()/abort()函数将结束应用程序。我们不会返回调用点,但是.. 我们根本不会返回。
我认为这是针对 C 语言的。您是否认为还有另一种方法可以退出函数而不返回调用点?
在 C++ 中,异常显然不会返回调用点。他们要么去一个catch块,要么到达调用函数,寻找一个catch块。
据我所知,这将是唯一的情况。
谢谢你帮助我=)