Compartir a través de


Параметр макро в юникодной строке -- мелочь, а приятно

(?????????) ?????? ???? ??????? ???-?? ?????...

??? ??????, ???? ????? ??????? ????? ? ?/?++, ?????????? stringinize, ? ???????? ??????, ??? ???? ??????????? ???????? ???????? ????? ? ??????, ????????, ???:

#define mymacro(ku) printf("Expression %s is equal to %ld\n", "" #ku, (ku))

????? ?? ??? ??????, ?????? ??? ?????? ??? ?????? ? ?????????? ????????? ???????????? ?? ??? ???? ????? ???? ??? ???????? ?? ???????. ???????????, ??? ??????:

#define CHECK(expr) \
                    if ( expr ) \
{ \
wprintf(L"Error calling %s\n", L"" L#expr L"" ); \
                                        return 16; \
} \

?? ?????? ????????, ? ????? ? ???? ??????? ????????? ??????? ???? ? ???, ??? ? ???? ?? wprintf() ????, ? ?????? ???????, ??????? ?????? ?????? ?????. ??????, ?????? L"" ?????????????, ??? ? ??? ????????????? ???????.

??? ?? ????, ????? ??? ? ?? ??????? ?????? -- ???? ?? ?????? ???????? ? ????? ?????, ???????? ?? ???????????????, ? ????? ??? ?? ???? ????????? ? ??????????. ? ?????, ??? ???????? ??? ?????????? ???????????? ? ?? ??????????? ? ??? ???? ????? ????????.

Comments

  • Anonymous
    September 30, 2006
    Еще красивее юзать макро для TCHAR:
    _T("Error calling "#expr)

    ...и выглядят такие строки читабельнее, и юникодовость гибко определяется настройками проекта ;)
  • Anonymous
    October 02, 2006
    Дело вкуса. Сам я настороженно отношусь в TCHAR - никогда с ней не знаешь, какая версия вызывается. Хотя если писать и для NT-XP, и для 95-98, то, наверное, удобная штука.