1
#define SIG_IGN     (void (*)(int))1
#define SIG_HOLD    (void (*)(int))5
#define SIG_ERR     ((void (*)(int))-1)

私はその意味を知ってい(void (*)(int))ます: unknown_name を void を返す関数 (int) へのポインタにキャストします。

しかし、次の意味は何1ですか?

4

2 に答える 2

3

定数は、有効な関数ポインターと区別できるようにするために使用されます。それ自体には何の意味もありません (明確であること以外には)。

例えば:

#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 はこれらの定数-10または1について言及していません。<signal.h>

参考文献:

于 2016-01-30T18:33:18.367 に答える