setjmp.h trong C
setjmp.h trong C
Header file có tên setjmp.h trong Thư viện C định nghĩa macro setjmp(), một hàm longjmp(), và một kiểu biến jmp_buf, để bỏ qua lời gọi hàm thông thường và trả về qui tắc, bằng cách cung cấp các phương thức để thực hiện các cú nhảy mà vẫn duy trì môi trường gọi hàm.
Biến được định nghĩa trong setjmp.h
Dưới đây là kiểu biến được định nghĩa trong setjmp.h:
jmp_buf: Đây là một kiểu mảng được sử dụng để giữ thông tin cho macro setjmp() và hàm longjmp().
Các macro được định nghĩa trong setjmp.h
Chỉ có một macro được định nghĩa trong thư viện này:
int setjmp(jmp_buf environment): Macro này lưu trữ môi trường (environment) hiện tại bên trong biến environment để sử dụng sau bởi hàm longjmp(). Nếu macro này trả về một cách trực tiếp từ lời gọi macro, thì nó trả về 0; nhưng nếu nó trả về từ một lời gọi hàm longjmp(), thì một giá trị khác 0 được trả về.
Khai báo Macro setjmp() trong C
Dưới đây là phần khai báo cho setjmp() macro.
int setjmp(jmp_buf environment)
Tham số:
environment − Đây là đối tượng của kiểu jmp_buf nơi mà thông tin về môi trường được lưu trữ.
Trả về giá trị:
Macro này trả về nhiều hơn 1 lần. Đầu tiên, trên lời gọi trực tiếp của nó, nó luôn luôn trả về 0. Khi longjmp được gọi với thông tin được thiết lập tới environment, macro này lại trả về lần nữa; lúc này nó trả về giá trị đã được truyền tới longjmp như là tham số thứ hai.
Ví dụ:
Chương trình C sau minh họa cách sử dụng của setjmp() macro.
#include <stdio.h>
#include <stdlib.h>
#include <setjmp.h>
main()
{
jmp_buf env;
int i;
i = setjmp(env);
printf("i = %d\n", i);
if (i != 0) exit(0);
longjmp(env, 2);
printf("Dong nay co duoc in khong?\n");
}
Biên dịch và chạy chương trình C trên sẽ cho kết quả:
i = 0
i = 2
Các hàm được định nghĩa trong setjmp.h
Chỉ có một hàm được định nghĩa trong setjmp.h:
Hàm void longjmp(jmp_buf environment, int value): Hàm này phục hồi môi trường (environment) đã được lưu trữ bởi lời gọi gần nhất tới macro setjmp() trong cùng lời gọi hàm của chương trình với tham số tương ứng là jmp_buf.
Khai báo hàm longjmp() trong C
Dưới đây là phần khai báo cho hàm longjmp() trong C:
void longjmp(jmp_buf environment, int value)
Tham số:
environment − Đây là đối tượng của kiểu jmp_buf chứa thông tin để lưu trữ môi trường tại điểm gọi của setjmp.
value − Đây là giá trị để biểu thức setjmp ước lượng.
Trả về giá trị:
Hàm này không trả về bất cứ giá trị nào.
Ví dụ:
Chương trình C sau minh họa cách sử dụng của hàm longjmp() trong C:
#include <stdio.h>
#include <stdlib.h>
#include <setjmp.h>
main()
{
jmp_buf env;
int i;
i = setjmp(env);
printf("i = %d\n", i);
if (i != 0) exit(0);
longjmp(env, 2);
printf("Dong nay co duoc in khong?\n");
}
Biên dịch và chạy chương trình C trên sẽ cho kết quả:
i = 0
i = 2
Theo Tutorialspoint
Bài trước: math.h trong C
Bài tiếp: signal.h trong C
Bạn nên đọc
Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:
Cũ vẫn chất
-

Top smartphone phát ra nhiều bức xạ nguy hiểm nhất hiện nay
Hôm qua -

Full code Tịch Tà Kiếm code Kiếm Thiệp Tinh Gia mới nhất, nhận full KNB, VIP
Hôm qua 1 -

Code Meow Sen Ơi Đừng Sợ mới nhất 19/11/2025
Hôm qua -

Cách nạp kim cương Zombies Boom, nạp tiền Zombies Boom
Hôm qua -

Cách chuyển video thành MP3
Hôm qua -

Code Khởi Nguyên Mobile mới nhất và cách nhập code
Hôm qua -

11 triệu thiết bị Android nhiễm phần mềm độc hại từ Google Play
Hôm qua -

30+ lời chúc sinh nhật chồng yêu ý nghĩa và ngọt ngào
Hôm qua 1 -

Cách sử dụng Gemini 1.5 Flash miễn phí
Hôm qua -

Các cách chụp ảnh màn hình máy tính trên Windows
Hôm qua 48
Học IT
Công nghệ
Microsoft Word 2013
Microsoft Word 2007
Microsoft Excel 2019
Microsoft Excel 2016
Microsoft PowerPoint 2019
Google Sheets
Lập trình Scratch
Bootstrap
Hướng dẫn
Ô tô, Xe máy