Acabo de encontrar esto.
// /usr/include/sys/signal.h // OS X #define SIG_ERR ((void (*)(int))-1) ¿Qué significa ((void (*)(int))-1) parte?
¿Es diferente a
#define SIG_ERR -1?
Esto se convierte en un puntero de función:
((type) value) Donde el tipo es void (*)(int) que es un puntero a la función que acepta un argumento int y devuelve void , que en realidad es una firma de un controlador de señal:
typedef void (*sighandler_t)(int); Puede decodificar dichos tipos con la herramienta cdecl o el sitio web: http://cdecl.org/
Esta es una conversión de -1 en el puntero de función que se espera como el tipo de SIG_ERR. Usar -1 directamente no funciona en situaciones en las que el compilador necesita el tipo correcto.