C แมโครห้องสมุด - setjmp ()
C ห้องสมุดมาตรฐาน - <setjmp.h>
ลักษณะ
Csetjmp ห้องสมุดมาโคร int (สภาพแวดล้อม jmp_buf)เก็บไว้ในสภาพแวดล้อมสภาพแวดล้อมในปัจจุบันตัวแปรในการทำงานlongjmp ()เพื่อใช้ในภายหลัง หากผลตอบแทนแมโครนี้โดยตรงจากโทรมาโครก็จะส่งกลับศูนย์ แต่ถ้ามันกลับมาจากlongjmp โทร ()ฟังก์ชั่นก็จะส่งกลับ longjmp ผ่านเป็นอาร์กิวเมนต์ที่สองของค่าไม่ใช่ศูนย์
คำแถลง
นี่คือ setjmp () คำสั่งแมโคร
int setjmp(jmp_buf environment)
พารามิเตอร์
- สภาพแวดล้อม - นี้เป็นวัตถุที่ใช้ในการเก็บข้อมูลสภาพแวดล้อมประเภท jmp_buf
ราคาย้อนกลับ
แมโครนี้อาจจะกลับมามากกว่าหนึ่งครั้ง เป็นครั้งแรกในโดยตรงเรียกมันก็มักจะส่งกลับค่าศูนย์ กับข้อมูลด้านสิ่งแวดล้อมให้ไว้เมื่อคุณเรียก longjmp แมโครนี้จะกลับมาอีกครั้งที่จุดก็จะส่งกลับค่าที่จะได้รับการส่งผ่านเป็นอาร์กิวเมนต์ที่สองเพื่อ longjmp
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงให้เห็นถึง setjmp () ที่ใช้งานแมโคร
#include <stdio.h> #include <stdlib.h> #include <setjmp.h> int main() { int val; jmp_buf env_buffer; /* 保存 longjmp 的调用环境 */ val = setjmp( env_buffer ); if( val != 0 ) { printf("从 longjmp() 返回值 = %s\n", val); exit(0); } printf("跳转函数调用\n"); jmpfunction( env_buffer ); return(0); } void jmpfunction(jmp_buf env_buf) { longjmp(env_buf, "w3cschool.cc"); }
Let 's รวบรวมและเรียกใช้โปรแกรมข้างต้นซึ่งจะส่งผลต่อไปนี้:
跳转函数调用 从 longjmp() 返回值 = w3cschool.cc