在64bit下, sizeof(int)=4, sizeof(long, char*, void*)=8. 所以将程序扩展至64bit很简单, 只需在平时注意int, long的区别即可.
(1) 如果函数的参数可能被赋值为指针, 必须用long或ULONG, 不能用int, DWORD, 等. 比如
int test(int wParam, int lParam);
test((int)&value, (int)&ID);
这种写法在32bit下没问题, 64bit就会出问题. 所以正确的写法是
int test(long wParam, long lParam);
(2) 返回值也是如此, 如果函数的返回值可能返回指针, 必须用long或ULONG.
int Test(long lParam, long lParam)
{
if(...) return 123;
else return (int)&value;
}
正确的写法是 long Test..
(3) 结构体也是如此. 如果一个变量可能保存地址, 用long, 而不是int.
typedef struct
{
....
long reservedValue;
}...;
