当使用Visual Studio 2017编译较旧的objectarx代码并使用AutoCAD 2019进行测试时,以下函数在调用我自己的函数fname = T
时仅打印fname = TestFileName
而不是整个acad_printf
。直接调用ads_printf
或acutPrintf
时不会发生此问题。在以前的版本中,我从来没有对此有任何疑问。包括tchar.h
,TCHAR
键入为wchar_t
,TILE_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);
}
答案 0 :(得分:1)
格式化%s无效,其中需要%ls
acad_printf(_T("\nfname = %ls"), fname);