请帮我解决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 这样的,就要测试看看了。
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