С макро раскрывающееся в несколько блоков

Тема в разделе "LANGS.C", создана пользователем elimli, 30 май 2007.

  1. elimli

    elimli New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2007
    Сообщения:
    20
    Можно ли написать такое макро на С, чтоб оно раскрывалось в несколько блоков? Например:
    На входе имеем
    Код (Text):
    1.    
    2. BEGIN
    3.     ITEM(one)
    4.     ITEM(two)
    5.     ITEM(three)
    6. END
    7. или, скажем,
    8. ITEMS(one, two, three)
    В результате, после препроцессирования хотелось бы получить что то типа:
    Код (Text):
    1.    
    2. enum {one, two, three};
    3.    
    4. void on_one();
    5. void on_two();
    6. void on_three();
    7.      
    8. int map(char* id)
    9. {
    10.    if (strcmp(id, "one") == 0) return one;
    11.    if (strcmp(id, "two") == 0) return two;
    12.    if (strcmp(id, "three") == 0) return three;
    13. }
    Единственная идея которая у меня есть - это вынести BEGIN ... END в отдельный h файл и включать его несколько раз с разным окружением.