Я читаю книгу (Расширенное программирование в среде UNIX), и я просматриваю раздел о сигналах.
При использовании функции сигнала:
void (*signal(int signo, void (*func)(int)))(int);
параметр func может быть указателем на функцию, определенную пользователем, или может быть SIG_ERR, SIG_DFL или SIG_IGN.
Мой вопрос не в части UNIX этого, но я хотел дать задний план. Я действительно хочу знать, что в книге указано, что эти константы определяются как:
#define SIG_ERR (void (*)())-1
и т.п. для 0 и 1.
Теперь у меня есть приличные догадки, но чтобы сэкономить время - может кто-нибудь скажет мне, что это делает и почему он работает?
Кроме того, есть ли... erm... cleaner? способ написать это, предполагая, что я использую С++ и взаимодействую с этим C API?