使用CStringArray 定义数组获并取数组大小,语句如下:
CStringArray sArr;
sArr.Add("姓名");
sArr.Add("姓名");
int nCount = sArr.GetCount();
使用VS2003编译时,得到如下警告信息:
warning C4244: “=” : 从“INT_PTR”转换到“int”,可能丢失数据
我得解决办法是:
将int nCount = sArr.GetCount();修改为int nCount = (int)sArr.GetCount();
查看帮助文档,INT_PTR是在basetsd.h中定义的数据类型,代码如下:
#if defined(_WIN64)
typedef __int64 INT_PTR, *PINT_PTR;
typedef unsigned __int64 UINT_PTR, *PUINT_PTR;
typedef __int64 LONG_PTR, *PLONG_PTR;
typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;
#define __int3264 __int64
#else
typedef _W64 int INT_PTR, *PINT_PTR;
typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;
typedef _W64 long LONG_PTR, *PLONG_PTR;
typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR;
#define __int3264 __int32
#endif
个人理解为INT_PTR是特殊定义的类型在_W64(即__w64)中: int --> INT_PTR是为了解决32位与64位编译器的兼容性而设置的