Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > va_end: лажа с юникодом


Автор: Alca 8.11.2009, 16:09
VC++ 2008
Код

error C2440: '=' : cannot convert from 'va_list' to 'LPCTSTR'    d:\...\source\cxstring.cpp    566

Код

#ifdef  _UNICODE
    #define tstring        std::wstring 
#else   
    #define tstring        std::string 
#endif  /*_UNICODE*/

Код
tstring sFormatStrTest(LPCTSTR pcszFormat, ...) {       
    /*DEBUG*/XASSERT_RET(NULL     != pcszFormat,  _T(""));        
    /*DEBUG*/XASSERT_RET(_T('\0') != *pcszFormat, _T("")); 

    tstring sBuff(128, _T('\0'));
    INT     iWrittenSize = - 1;

    va_list palArgs = NULL;
    va_start(palArgs, pcszFormat);

    for (;;) {
        iWrittenSize = _vsntprintf(&sBuff[0], sBuff.size(), pcszFormat, palArgs);    
        /*DEBUG*/XASSERT_RET(NULL != palArgs, _T("")); 

        if (iWrittenSize > - 1 && iWrittenSize < (INT)sBuff.size()) {    
            break; 
        }
        sBuff.resize(sBuff.size() * 2);
    }

    //TODO: va_end 
    //Error    1    error C2440: '=' : cannot convert from 'va_list' to 'LPCTSTR'    d:\...\source\cxstring.cpp    566
    va_end(pcszFormat); 

    return tstring(sBuff.begin(), sBuff.begin() + iWrittenSize);
}

Автор: smoke_man 9.11.2009, 11:31
А разве не так должно быть:
Код

va_end(palArgs);

Автор: Alca 9.11.2009, 11:35
smoke_man,  спасибо smile!  Это все злой копипаст....  smile 

Автор: smoke_man 9.11.2009, 11:54
 smile  бывает! Не за что!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)