首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请帮小弟我解决warning C4313

2012-09-10 
请帮我解决warning C4313有如下代码:TCHAR strBuffer[1024]_stprintf_s(strBuffer, _T(%sErrorID:%d),

请帮我解决warning C4313
有如下代码:
  TCHAR strBuffer[1024];  
  _stprintf_s(strBuffer, _T("%s ErrorID:%d"), _T( "Data is not sync when check the memory leak! cache value %d record sum value %d!"), (size_t)GetLastError());

在工程A中编译无警告
在工程B中编译有警告:'swprintf_s' : '%d' in format string conflicts with argument 2 of type 'wchar_t (*__w64 )[1024]'

两个工程中均可以正常工作
原因是工程A的工程设置 中没有检测64位的问题。B则检测了

请问这是为什么导致的?

[解决办法]
可以关闭警告或者降低级别
[解决办法]
size_t 类型,标准的做法是加 z修饰

楼主的VC版本是否足够新,可以支持 %zu 这样的,就要测试看看了。

C/C++ code
size_t x = ...;ssize_t y = ...;printf("%zu\n", x);  // prints as unsigned decimalprintf("%zx\n", x);  // prints as hexprintf("%zd\n", y);  // prints as signed decimal 

热点排行