关于INT_PTR的理解

来源:互联网 发布:tick高频交易算法 编辑:程序博客网 时间:2024/05/29 13:44

使用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位编译器的兼容性而设置的

0 0
原创粉丝点击