我正在读一本书(UNIX环境中的高级编程),我正在阅读有关信号的部分.
使用信号功能时:
void (*signal(int signo, void (*func)(int)))(int);
Run Code Online (Sandbox Code Playgroud)
参数func可以是指向用户定义的函数的指针,也可以是SIG_ERR,SIG_DFL或SIG_IGN.
我的问题不在UNIX的部分,但我想提供背景知识.我真正想知道的是,这本书指出这些常数是不确定的:
#define SIG_ERR (void (*)())-1
Run Code Online (Sandbox Code Playgroud)
等等为0和1.
现在,我有一些不错的猜测,但为了节省时间 - 有人能告诉我这是做什么以及它为什么有效?
还有......呃......干净吗?假设我使用C++并与此C API交互,写这个的方法?