在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參數后就正確了。