Как можно добавить произвольное количество параметров для OutputDebugString, которая принимает только один параметр, и превратить её в аналог printf ? Т.е. примерно так: Код (Text): void PRINT (char* fmt, ...){ char buffer[1024]; wsprintf (buffer, fmt, ...); OutputDebugString (buffer); } Здесь, естественно, ошибка (...) Пробовал с va_list - тоже не получается Что можно придумать?
Я ж говорю, что уже пробовал пробовал это: Код (Text): void PRINT (char* fmt, va_list arglist){ char buffer[1024]; wvsprintf (buffer, fmt, arglist); OutputDebugString (buffer); } PRINT ("Node = %s\n", pNode->next->pBuffer); Компилятор выдаёт ошибку: 'PRINT' : function does not take 2 arguments. Или что, я сам должен инициализировать va_list? Если да, то это получается слишком громоздкий код...
Код (Text): VOID PrintFormatMessage(PSTR Format, ...){ char tmp[1000]; va_list cur; va_start(cur, Format); wvsprintf(tmp, Format, cur); OutputDebugString(hWnd, tmp); } просто жуть как громоздко.
я делал так Код (Text): int __cdecl message(const char *format, ...) { va_list arglist; va_start(arglist, format); int retval = vmessage(format, arglist); va_end(arglist); return retval; } int __cdecl vmessage(const char *format, va_list arglist) { char buffer[MAX_FILENAME]; buffer[0] = '\0'; int retval = _vsnprintf(buffer, sizeof(buffer), format, arglist); Addtolist(0, 0, buffer); return retval; }
va_end нафиг не надо ты же arglist потом юзать не собираешься, да и зачем на 2 функции разбивать, ведь ты же vmessage не юзаешь в коде?