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