关于INT_PTR的理解

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值