2016-01-30 396 views
-1
#define SIG_IGN  (void (*)(int))1 
#define SIG_HOLD (void (*)(int))5 
#define SIG_ERR  ((void (*)(int))-1) 

我知道(void (*)(int))是什麼意思:將unknown_name轉換爲指向函數(int)的指針返回void。SIG_IGN宏定義中數字1的含義是什麼?

但是以下的含義是什麼1

+4

在哪裏 「5」 和 「-1」,在您的標題從何而來? –

回答

2

該常量用於區別於有效的函數指針。它本身沒有意義(除非是明顯的)。

例如:

#define SIG_DFL ((__sighandler_t)0)  /* default signal handling */ 
#define SIG_IGN ((__sighandler_t)1)  /* ignore signal */ 
#define SIG_ERR ((__sighandler_t)-1) /* error return from signal */ 

這些常量都不是東西,你可以稱之爲一個有效的函數地址。所以它們可以用作說明如何處理信號的特殊值。

POSIX的方式並沒有提到這些常量-101,寧願只說符號常量(在預期的地方,反正):<signal.h>

延伸閱讀: