1
在<signal.h>
有如下的定義:SIG_IGN,SIG_DFL,SIG_ERR的定義
#define SIG_ERR (void (*)())-1
#define SIG_DFL (void (*)())0
#define SIG_IGN (void (*)())1
我覺得void (*)()
意味着它是一個函數指針返回類型是void和參數是無效的(因爲括號之間有空)。
但是在signal()
函數中,第二個參數類型是void (*func)(int)
。
那麼,爲什麼上面三件事的定義是void (*)()
。而且,還有什麼意思是定義中的數字爲-1
0
1
?
如何解釋這些定義?
這些是(小)整數值轉換爲pointer_to_function。該實現可以將它們與實際函數指針區分開來,因此它們將永遠不會被調用(不存在的函數將不會被調用),而是被視爲特殊的。而且您不必解釋這些值,只需使用符號常量即可。 – wildplasser
可能重複[SIG \ _IGN宏定義中的數字1的含義是什麼?](http://stackoverflow.com/questions/35105452/what-s-the-meaning-of-the-number-1 -in-sig-ign-macro-definition) –
你爲什麼要解釋這個文件?它可能包含實現內部部件,而不是看起來像有效的C代碼 –