在VS2013上运行一个简单程序时,出现了error C4996: 'swprintf': swprintf has been changed to conform with the ISO C standard, adding an extra character count parameter. To use traditional Microsoft swprintf, set _CRT_NON_CONFORMING_SWPRINTFS.的错误。由错误信息可以知道swprintf函数的问题,在MSDN上查询得到该函数的申明
int swprintf( wchar_t *buffer, size_t count, const wchar_t *format [, argument]... );
且有下面这段话:
“swprintf 符合 ISO C 标准,需要 size_t 类型的第二个参数,即count。 若要强制进行早期非标准行为,请定义_CRT_NON_CONFORMING_SWPRINTFS。 在将来的版本中,旧行为可能移除,因此,应更改代码以使用新的一致性行为。”
在原来出错语句:swprintf(szTip, _T("计时:%d"), i);
修改为:swprintf(szTip, 100,_T("计时:%d"), i);
即添加了count参数后就正确了。