Tôi đang đọc một cuốn sách (Lập trình nâng cao trong môi trường UNIX) và tôi sẽ đi qua phần về tín hiệu.Đúc số nguyên cho hàm con trỏ trong mã tín hiệu - tại sao tính năng này hoạt động?
Khi sử dụng chức năng tín hiệu:
void (*signal(int signo, void (*func)(int)))(int);
tham số, func, có thể là một con trỏ tới một hàm được định nghĩa bởi người sử dụng, hoặc nó có thể được SIG_ERR, SIG_DFL, hoặc SIG_IGN.
Câu hỏi của tôi không nằm trong phần UNIX, nhưng tôi muốn cung cấp thông tin cơ bản. Những gì tôi thực sự muốn biết là, cuốn sách nói rằng những hằng số được defiend như:
#define SIG_ERR (void (*)())-1
và những thứ tương tự cho 0 và 1.
Bây giờ, tôi có một số dự đoán khá nhưng để tiết kiệm thời gian - ai đó có thể cho tôi biết những gì heck này đang làm và tại sao nó hoạt động?
Ngoài ra, có một ... erm ... sạch hơn? cách viết này giả sử tôi đang sử dụng C + + và tương tác với C API này?
Ah, do đó, nó làm cho một con trỏ hàm đến một địa chỉ cố ý (nhưng được xác định). Tôi nghĩ nó trông như thế nhưng nó có vẻ sai vì một lý do nào đó. Cảm ơn bạn! –