Константа используется, чтобы ее можно отличить от действительного указателя функции. Он не имеет никакого значения сам по себе (кроме того, что он отличается).
Например:
#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, кстати, не говоря уже эти константы -1
, 0
или 1
, предпочитая говорить только символические константы (в ожидаемом месте, во всяком случае): <signal.h>
.
Дальнейшее чтение:
Где "5" и "-1" в заголовке взялось? –