读书人

请帮小弟我解决warning C4313

发布时间: 2012-09-10 11:02:33 作者: rapoo

请帮我解决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 

读书人网 >C++

热点推荐