vs2005 warning C4267: 'initializing' : conversion from 'size_t' to 'int', possible loss of data

来源:互联网 发布:网络高科技犯罪电视剧 编辑:程序博客网 时间:2024/05/22 05:33

查MSDN得:   
size_t unsigned integer    Result of sizeof operator. STDDEF.H and other include files  

出现C4276 warning是因为测试 32位代码的64位兼容性问题而出现的警告,由/WP64开关控制,默认是打开的。

size_t 是针对系统定制的一种数据类型,一般是整形,因为C/C++标准只定义一最低的位数,而不是必需的固定位数。而且在内存里,对数的高位对齐存储还是低位对齐存储各系统都不一样。为了提高代码的可移植性,就有定议le 这样的数据类型。

size_t 在32位系统上定义为 unsigned int,在64位系统上定义为 unsigned long.

STDDEF.H的内容
#ifndef   _SIZE_T_DEFINED   
#ifdef     _WIN64   
typedef   unsigned   __int64         size_t;   
#else   
typedef   _W64   unsigned   int       size_t;   
#endif   
#define   _SIZE_T_DEFINED   
#endif  


解决方法:(注:本人的是vs2005)

Project ->Properties ->C/C++ ->General-> Detect 64bit Portability Issues,设置成否

阅读全文
0 0
原创粉丝点击