Various Arg List C++ Wrapper

Тема в разделе "LANGS.C", создана пользователем punxer, 15 апр 2010.

  1. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Код (Text):
    1. int DebugPrintF(const char* Format,...)
    2. {
    3.     char tmp[255];
    4.     va_list uk_arg;
    5.     va_start(uk_arg,Format);
    6.     int i;
    7.  
    8.     while ( (i=va_arg(uk_arg,int))!=-1)
    9.     {
    10.         sprintf(tmp,Format,[b]???[/b]
    11.         OutputDebugString(tmp);
    12.     }
    13.  
    14.  
    15.  
    16.     return 1;
    17. }
    Без ассемблера можно реализовать?
     
  2. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    ну или с ассемблером))
     
  3. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    punxer
    vsprintf , не?
     
  4. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Booster в точку, забыл про нее(
     
  5. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Код (Text):
    1. int DebugPrintF(const char* Format,...)
    2. {
    3.     va_list args;
    4.     int len;
    5.     char * buffer;
    6.  
    7.     va_start( args, Format );
    8.     len = _vscprintf( Format, args ) + 1;
    9.     buffer =(char*) malloc( len * sizeof(char) );
    10.     vsprintf( buffer, Format, args );
    11.     OutputDebugString(buffer);
    12.     free( buffer );
    13.  
    14.     return 1;
    15. }
     
  6. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    [CLOSED]
     
  7. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    частые malloc\free там где можно выделять память в стеке - зло.
     
  8. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    GoldFinch
    для дебага сойдет
     
  9. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    punxer
    2ADD: va_end нужен по идее вконце
     
  10. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    deLight
    Код (Text):
    1. void DebugPrintF(const char* Format,...)
    2. {
    3.     va_list args;
    4.     int len;
    5.     char * buffer;
    6.  
    7.     va_start( args, Format );
    8.     len = _vscprintf( Format, args ) + 1;
    9.     buffer =(char*) malloc( len * sizeof(char) );
    10.     vsprintf( buffer, Format, args );
    11.     OutputDebugString(buffer);
    12.     free( buffer );
    13.     va_end(args);
    14.     return;
    15. }
     
  11. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    deLight
    Походу не обязательно%)
     
  12. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    punxer
    соблюдай же правила, привыкай к порядку, это же си )