您的位置:首页 > 其它

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

2012-06-28 10:13 567 查看
查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,设置成否
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐