Это дает вам карту с меньшим количеством кода для записи. Если вы хотите, вы также можете использовать магию препроцессора, чтобы сделать код еще проще и избежать многократного написания имени. Но чаще всего злоупотребление препроцессором приводит только к тому, что код становится менее полезным, а не к лучшему. (Обратите внимание, что препроцессорную магию все еще можно использовать, если вы решите не использовать C ++ 0x и продолжите свой путь).

у программу, которая читает имя сигнала (например, SIGSTOP, SIGKILL и т. Д.) В виде строки из командной строки и вызывает системный вызов kill () для отправки сигнала. Мне было интересно, если есть простой способ преобразовать строку в сигнальные коды (в signal.h).

В настоящее время я делаю это, написав свою собственную карту, которая выглядит следующим образом:

signal_map["SIGSTOP"] = SIGSTOP;
signal_map["SIGKILL"] = SIGKILL;
....

Но это утомительно, чтобы написать это для всех сигналов. Итак, я искал более элегантный способ, если он существует.