2016-01-30 180 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>

延伸阅读: