描述
C 库宏int setjmp(jmp_buf environment), 保存当前environment进入变量环境供函数以后使用longjmp().如果这个宏直接从宏调用返回,它返回零,但如果它从一个longjmp()函数调用,然后它返回传递给 longjmp 作为第二个参数的值。
声明
以下是 setjmp() 宏的声明。
int setjmp(jmp_buf environment)
参数
environment─ 这是存储环境信息的类型为 jmp_buf 的对象。
返回值
这个宏可能返回不止一次。第一次直接调用时,它总是返回零。当longjmp被设置为环境的信息被调用时,宏再次返回;现在它返回传递给 longjmp 作为第二个参数的值。
示例
下面的例子展示了 setjmp() 宏的用法。
#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, "tutorialspoint.com");
}
让我们编译并运行上面的程序,这将产生以下结果——
Jump function call Returned from a longjmp() with value = tutorialspoint.com
相关用法
- C语言 setlocale()用法及代码示例
- C语言 setlinestyle()用法及代码示例
- C语言 setviewport()用法及代码示例
- C语言 setbuf()用法及代码示例
- C语言 setfillstyle() and floodfill()用法及代码示例
- C语言 setvbuf()用法及代码示例
- C语言 sector()用法及代码示例
- C语言 sinh()用法及代码示例
- C语言 scanf()用法及代码示例
- C语言 strcspn()用法及代码示例
- C语言 showbits()用法及代码示例
- C语言 sqrt()用法及代码示例
- C语言 system()用法及代码示例
- C语言 strtol()用法及代码示例
- C语言 sprintf()用法及代码示例
- C语言 sscanf()用法及代码示例
- C语言 snprintf()用法及代码示例
- C语言 strrchr()用法及代码示例
- C语言 strftime()用法及代码示例
- C语言 strtok()用法及代码示例
注:本文由纯净天空筛选整理自 C library macro - setjmp()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。