返回值
该宏可能返回不止一次。第一次直接调用时,它总是返回零。在将信息设置为环境的情况下调用longjmp时,宏将再次返回;否则,宏将返回。现在,它返回传递给longjmp的值作为第二个参数。
示例
以下示例显示fmod宏的用法-
#include <stdio.h>
#include <stdlib.h>
#include <setjmp.h>
int main () {
int val;
jmp_buf env_buffer;
/* save calling environment for longjmp */
val = setjmp( env_buffer );
if( val != 0 ) {
printf("Returned from a longjmp() with value = %s\n", val);
exit(0);
}
printf("Jump function call\n");
jmpfunction( env_buffer );
return(0);
}
void jmpfunction(jmp_buf env_buf) {
longjmp(env_buf, "jc2182.com");
}
尝试一下
让我们编译并运行上面的程序,它将产生以下结果-
Jump function call
Returned from a longjmp() with value = jc2182.com