Разобрался наконец как работать с переменным количеством аргументов, а точнее конструкцией ... в Си-шных функциях. Заодно написал полезняшку для отладки с помощью WinAPI-шной функции OutputDebugString, которая неудобна, т.к. принимает только строки, что заставляло меня писать громоздские конструкции для отладки.
Исходники void TraceString(const char *msg, ...) см. ниже
#include <cstdarg>#include <cstdarg>
...
void TraceString(const char *msg, va_list args)
{
try
{
CString Msg;
Msg.FormatV(msg,args);
OutputDebugString(Msg);
}
catch (CMemoryException*)
{
}
catch (std::bad_alloc&)
{
}
}
void TraceString(const char *msg, ...)
{
va_list ArgList; va_start(ArgList, msg);
TraceString(msg, ArgList);
va_end(ArgList);
}
...
int main()
{
// Как её использовать? Как printf() -
TraceString("%s\t%d\t%s\n", it->pinName, it->port, it->netName);
}
No comments:
Post a Comment