在C言语编程中,偶然间我们须要在特定前提下中断函数的正常履行流程。本文将介绍多少种在C言语中中断函数挪用的方法。 总结来说,C言语中并不直接的“中断”关键字,但是我们可能经由过程以下多少种方法实现中断函数挪用的后果。
exitFlag
。在functionToInterrupt
函数中,我们按期检查这个标记变量。假如它被设置,函数将提前前去。bool exitFlag = false; void functionToInterrupt() { while (!exitFlag) { // 函数履行过程 if (须要中断) { exitFlag = true; } } }3. 利用longjmp跟setjmp:这些函数供给了一种非部分的跳转方法。
setjmp
函数在指定的情况中保存以后顺序的状况,而longjmp
可能跳回到这个状况。这意味着,无论以后履行流程在哪个函数中,都可能跳回到setjmp
保存的状况。if (setjmp(env) == 0) { // 设置好情况,之后可能longjmp回到这里 } else { // 从longjmp跳转过去的处理 }在另一个函数中,可能利用
longjmp
跳回到setjmp
处:longjmp(env, 1);须要留神的是,利用longjmp跟setjmp时要谨慎,因为它们可能会形成资本泄漏或状况不分歧的成绩。 最后,本文总结了C言语中中断函数挪用的多少种方法。在现实编程中,抉择哪一种方法取决于具体的须要跟场景。