[Windows c/c++] x86向x64迁移的问题

Tip 1 

Q:x64编译器编译提示 GWL_USERDATA 找不到,打开 WinUser.h 发现在其中,为什么?

A:需要将 GWL_USERDATA 该为 GWLP_USERDATA,GWLP_USERDATA 也在 WinUser.h中。如果提示某些宏/变量类型找不到,那么可以在同头文件中找找是不是有 “加P” 版本。

 

 

Tip2

Q:某些函数的入参类型不匹配,比如SetTimer的最后一个参数要求的函数类型中包含UINT_PTR,32位系统上可以正常编译,但是x64不行,需要设置成UINT_PTR,此类型是架构兼容的,定义见下图。

A:在必要的位置使用UINT_PTR代替UINT

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值