解决方案 »

  1.   

    是不是这样的:
    static void PrintMessage( const char *Format, ... )
    {
         va_list ArgList;
         char Buffer[256];
          va_start(ArgList, Format);
         vsprintf(Buffer, Format, ArgList);
         va_end(ArgList);
          MESSAGEBOX(GetFocus(), Buffer, "Error", MB_OK);
      

  2.   

    #define DBGPRINT(lpszFmt, ...) \
    TCHAR szText[1024] = {0}; \
    StringCchPrintf(szText, _countof(szText), lpszFmt, __VA_ARGS__); \
    OutputDebugString(szText);
      

  3.   


    逻辑应该不正确,va_start获取了参数地址到ArgList,然后将该值传人Xprintf,Xprintf解析输出的应该是ArgList的值(即函数PrintMessage参数表的地址)
      

  4.   


    __VA_ARGS__这个是什么呢?
      

  5.   

    “逻辑应该不正确”?
    这是 MSDN 中 的 例子, 我 没 测过 。 应该 不会 “逻辑不正确”吧
      

  6.   


    根据两位的提示,搞定LPCTSTR Format(LPCTSTR pFormat,... )
    {
    va_list ArgList;
    LPTSTR Buffer=new TCHAR[1024]; va_start(ArgList, pFormat);#ifdef _UNICODE
    vswprintf(Buffer, pFormat, ArgList);
    #else
    vsprintf(Buffer, pFormat, ArgList);
    #endif
    va_end(ArgList);
    return Buffer;
    }
      

  7.   

    重新研究了一下函数原型,你是对的,我还以为vprintf还是使用变参数,我理解错了