Нам нужно передать строку формата _TCHAR * и количество строк char * в функцию с аргументами переменной длины:
inline void FooBar(const _TCHAR *szFmt, const char *cArgs, ...) {
//...
}
Так это можно назвать так:
char *foo = "foo";
char *bar = "bar";
LogToFileA(_T("Test %s %s"), foo, bar);
Очевидно, что простым решением было бы использовать _TCHAR вместо char, но, к сожалению, такой роскоши у нас нет.
Нам нужно использовать это с va_start и т. Д., Чтобы мы могли отформатировать строку:
va_list args;
_TCHAR szBuf[BUFFER_MED_SIZE];
va_start(args, cArgs);
_vstprintf_s(szBuf, BUFFER_MED_SIZE, szFmt, args);
va_end(args);
К сожалению, мы не можем использовать это, потому что это дает нам эту ошибку:
Unhandled exception at 0x6a0d7f4f (msvcr90d.dll) in foobar.exe:
0xC0000005: Access violation reading location 0x2d86fead.
Я думаю, нам нужно преобразовать наш символ * в _TCHAR * - но как?