请教: c语言中, #define SIG_ERR (void (*)())-1 是什么意思???
<<Advanced Programming in the UNIX Environment>>书中给出了signal的函数原型, 如下:
#include <signal.h>
void (*signal(int signo, void (*func)(int)))(int);
Returns: previous disposition of signal (see following) if OK, SIG_ERR on error
然后又给出了几个宏常量:
#define SIG_ERR (void (*)())-1
#define SIG_DFL (void (*)())0
#define SIG_IGN (void (*)())1
这三个宏常量可作为signal的第二个实参.
现在的问题是:
signal的第个参数类型为: void (*func)(int))的, 可SIG_ERR宏把-1强制转换成void (*func)())的, 为什么??
我认为应该转换成void (*func)(int))的, 即: #define SIG_ERR (void (*)(int))-1
这两者有什么区别吗??我应该怎么去理解??