我刚发现了这个.
// /usr/include/sys/signal.h // OS X
#define SIG_ERR ((void (*)(int))-1)
Run Code Online (Sandbox Code Playgroud)
((void (*)(int))-1)部分是什么意思?
是不同的
#define SIG_ERR -1
Run Code Online (Sandbox Code Playgroud)
?
这被转换为函数指针:
((type) value)
Run Code Online (Sandbox Code Playgroud)
其中type是void (*)(int)指向函数的指针,该函数接受一个int参数并返回void,这实际上是信号处理程序的签名:
typedef void (*sighandler_t)(int);
Run Code Online (Sandbox Code Playgroud)
您可以使用cdecl工具或网站解码此类型:http://cdecl.org/