Написание необычного максроса на языке Си, возможно ли это вообще?

Тема в разделе "WASM.BEGINNERS", создана пользователем EvilsInterrupt, 1 май 2006.

  1. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Вобщем в драйверах для отладки часто используют заклинание вида:
    Код (Text):
    1. #if DBG
    2.     DbgPrint("=Driver= UnloadRoutine");
    3. #endif


    Все бы хорошо, но когда их много, обилие этих строк слишком затруднаяют анализ кода, т.к. падает наглядность кода.



    Было бы не плохо вместо кода выше, писать строчку вида:



    DbgMsg("=Driver= UnloadRoutine");



    Следовательно надо писать макрос, пытался написать, что нить вроде:
    Код (Text):
    1. #define DbgMsg(string) (#if DBG DbgPrint(string) #endif)


    и даже так:
    Код (Text):
    1. #define DbgMsg(string) \
    2. #if DBG DbgPrint(string)
    3. #endif#endif)




    Но выводятся ряд ошибок



    Вообще возможно ли примениние #if, #endif в теле макроса?
     
  2. razor

    razor Member

    Публикаций:
    0
    Регистрация:
    2 июл 2004
    Сообщения:
    40
    Код (Text):
    1.  
    2. #ifdef DBG
    3.     #define DbgMsg(s) DbgPrint(s);
    4. #else
    5.     #define DbgMsg(s)
    6. #endif
    7.  
     
  3. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    razor

    Айда улым, айда умница! Биг Зур Рэхмет! Алла пусть помагать тебе в твоих делах! Пусть матурым не обходит стороной!