"Todd Vierling" tv@pobox.com wrote:
: That's an easy one. One an Alpha, sizeof(int) != sizeof(foo *). I think : sizeof(int) == 8, while sizeof(foo *) == 4.
Other way round. sizeof(int) == 4; sizeof(void *) == 8.
In that case Wine needs to be compiled with _WIN64 macro defined. In that case WPARAM and LPARAM will have correct size as well. But be warned that compiling for Win64 is a completely unexplored terrain.
: gcc is kind enough to warn you about this potentially nasty situation, : although in these particular cases I don't see how putting the pointer : in something larger will create a problem.
Use intptr_t. If that's not available (via autoconf test), typedef intptr_t to be "unsigned long" locally, as "long" is the size of a pointer on all typical ILP32 and LP64 hosts.
In Wine we have to use UINT_PTR, ULONG_PTR, DWORD_PTR for casting pointer to an integer type. These macros have correct behaviour on Win32 and Win64.