Можно ли написать такое макро на С, чтоб оно раскрывалось в несколько блоков? Например: На входе имеем Код (Text): BEGIN ITEM(one) ITEM(two) ITEM(three) END или, скажем, ITEMS(one, two, three) В результате, после препроцессирования хотелось бы получить что то типа: Код (Text): enum {one, two, three}; void on_one(); void on_two(); void on_three(); int map(char* id) { if (strcmp(id, "one") == 0) return one; if (strcmp(id, "two") == 0) return two; if (strcmp(id, "three") == 0) return three; } Единственная идея которая у меня есть - это вынести BEGIN ... END в отдельный h файл и включать его несколько раз с разным окружением.