带有AutoCAD 2019的VS 2017中的TCHAR变量截断

时间:2018-06-24 08:50:37

标签: c visual-c++ character-encoding

当使用Visual Studio 2017编译较旧的objectarx代码并使用AutoCAD 2019进行测试时,以下函数在调用我自己的函数fname = T时仅打印fname = TestFileName而不是整个acad_printf。直接调用ads_printfacutPrintf时不会发生此问题。在以前的版本中,我从来没有对此有任何疑问。包括tchar.hTCHAR键入为wchar_tTILE_STR_LIMIT是2035。

    void acad_printf (const TCHAR *fmt, ...)
/*****************************************/

{
  TCHAR buf[500];
  va_list parg;

  va_start(parg, fmt);  /* Initialize variable arguments. */
  _vstprintf(buf,fmt,parg);
  ads_printf(_T("%.130s"),buf);
  va_end(parg);  
}

void test (void)
{

    TCHAR fname[TILE_STR_LIMIT] = _T("TestFileName");

    acad_printf(_T("\nfname = %s"), fname);
}

1 个答案:

答案 0 :(得分:1)

格式化%s无效,其中需要%ls

acad_printf(_T("\nfname = %ls"), fname);