Используя C ++ 0x, вы можете использовать списки инициализаторов, чтобы сделать это более простым:
const std::map<std::string, signal_t> signal_map{
{"SIGSTOP", SIGSTOP },
{"SIGKILL", SIGKILL },
...
};
Это дает вам карту с меньшим количеством кода для написания.Если вы хотите, вы также можете использовать магию препроцессора, чтобы сделать код еще проще и избежать многократного написания имени.Но чаще всего злоупотребление препроцессором приводит только к тому, что код становится менее полезным, а не к лучшему.(Обратите внимание, что магию препроцессора все еще можно использовать, если вы решите не использовать C ++ 0x и продолжайте в том же духе).