Hi,
ich habe folgenden Code, der in einem anderem Projekt ohne Probleme funktioniert. Nur in dem neuen Projekt nicht:
Folgende Fehlermeldungen erhalte ich:
Aufgerufen wird das ganze über z.B. "DBGTRACEF(("Failed on " #exp ", hr=%08x\n",hr)); "
Mittels define wird dann das passende aufgerufen:
ich habe folgenden Code, der in einem anderem Projekt ohne Probleme funktioniert. Nur in dem neuen Projekt nicht:
Folgende Fehlermeldungen erhalte ich:
Code:
Error 2 error C2664: 'StringCchCopyNW' : cannot convert parameter 1 from 'char [500]' to 'STRSAFE_LPWSTR'
Error 3 error C2664: 'StringCchVPrintfW' : cannot convert parameter 1 from 'char' to 'STRSAFE_LPWSTR'
Error 4 error C2664: 'OutputDebugStringW' : cannot convert parameter 1 from 'char [500]' to 'LPCWSTR'
Code:
#define MAX_TRACE_LINE_LEN 500
const char DEBUG_PREFIX[] = "XXXXXX: ";
const int DEBUG_PREFIX_LEN = strlen(DEBUG_PREFIX);
void PrintTraceF(__in char* formatStr, ...)
{
va_list args;
va_start( args, formatStr);
PrintTraceWithArgs(formatStr,args);
va_end(args);
}
void PrintTraceWithArgs(__in char* formatStr, va_list& args)
{
char szFormatedStr[MAX_TRACE_LINE_LEN];
size_t cchDebugPrefix = sizeof(DEBUG_PREFIX) / sizeof(DEBUG_PREFIX[0]);
StringCchCopyN(szFormatedStr, MAX_TRACE_LINE_LEN, DEBUG_PREFIX, cchDebugPrefix);
StringCchVPrintf(&szFormatedStr[DEBUG_PREFIX_LEN],
MAX_TRACE_LINE_LEN-1-DEBUG_PREFIX_LEN,
formatStr,
args);
// Ensure NULL termination in case of long strings
szFormatedStr[MAX_TRACE_LINE_LEN-1] = '\0';
OutputDebugString(szFormatedStr);
}
Aufgerufen wird das ganze über z.B. "DBGTRACEF(("Failed on " #exp ", hr=%08x\n",hr)); "
Mittels define wird dann das passende aufgerufen:
Code:
#define DBGTRACE(exp) PrintTraceF(exp)
#define DBGTRACEF(multiexp) PrintTraceF multiexp
Zuletzt bearbeitet: