0

ここに問題があります

Xcode 5 で一部の古いコード (ARC 以前、Xcode 4、GDB) を復活させています。すべてがコンパイルされて正常に起動しますが、C++ 文字列オブジェクトの内容を出力するときに、デバッガーの出力ログに問題があります。

#define DebugPrintf(args...) x_Printf(__FILE__,__LINE__,__PRETTY_FUNCTION__,args);

void x_Printf(const char *file, int lineNumber, const char *funcName, const char *format,...)
{
    va_list ap;

    va_start (ap, format);
    printf("%s (%s:%d)",funcName,file,lineNumber);
    printf(format,ap);
    va_end (ap);
}


void MyFunc() 
{
    string name;

    …

    DebugPrintf("Loaded entity %s\n",name.c_str());
}

結果:

void MyFunc() (File.cpp:52)Loaded entity \373*
${\370\325\377\277:{\373*
Ģ\247\300\242\247`6*

ただし、C++ 文字列オブジェクトの名前を調べると、コンテンツとして「MainMenu」が明確に含まれていることがわかります。

誰が何が起こっているのか知っていますか?

4

1 に答える 1

2

vprintfを使用する必要があります

void x_Printf(const char *file, int lineNumber, const char *funcName, const char *format,...)
{
    va_list ap;

    va_start (ap, format);
    printf("%s (%s:%d)",funcName,file,lineNumber);
    vprintf(format,ap); // <-- vprintf
    va_end (ap);
}
于 2013-11-13T20:58:28.863 に答える