我正在讀一本書(UNIX環境下的高級編程),我正在閱讀有關信號的部分。在信號代碼中將整數轉換爲函數指針 - 爲什麼這會起作用?
當使用信號函數:
void (*signal(int signo, void (*func)(int)))(int);
參數,FUNC,可以是一個指針,指向由用戶定義的功能,或者它可以是SIG_ERR,SIG_DFL或SIG_IGN。
我的問題不在UNIX的UNIX部分,但我想給背景。我真正想知道的是,這本書指出,這些常量defiend爲:
#define SIG_ERR (void (*)())-1
等以0和1
現在,我有一些不錯的猜測,但爲了節省時間 - 有人能告訴我這是怎麼回事,爲什麼它有效?
另外,有沒有......呃......清潔劑?寫這個假設我正在使用C++並與這個C API交互的方式?
啊,所以它是一個函數指針有意僞造(但定義)的地址。我認爲它看起來像那樣,但由於某種原因它似乎是錯誤的。謝謝! –