On 02-09-2010 21:21, Alexandre Julliard wrote:
Morten Rønnemorten.roenne@tdcadsl.dk writes:
I am looking for a way to change windef.h so that it will create the correct base types for both 16 and 32 bit compile.
Openwatcom defines the symbol __I86__ while compiling for 16 bit, is it acceptable that I use that to create 16 bit types? It seems that _MSC_VER will change a few cases of int to long, but far from enough. Is _MSC_VER intended to be a 16 bit compile flag? Or should I use something else more wine like (e.g. __WINE_16BIT_COMPILE).
Also compiling 16 bit give some errors in other include files (after I have defined proper sizes for the 16 bit compile) ../../../include/winnt.h(3529): Error! E1040: Field width too large #ifdef BITFIELDS_BIGENDIAN unsigned NameIsString:1; unsigned NameOffset:31; #else unsigned NameOffset:31; unsigned NameIsString:1; #endif As it can be seen the include file uses unsigned directly and not a type like DWORD or ULONG that would be a "safe" 32 bit. Would it be acceptable to change this and others to a "proper" type which I know to be size safe?
I don't think it makes sense to invest time into developing a 16-bit Winelib environment, and we certainly don't want to add 16-bit crap in the standard Win32 headers. These things should be part of the 16-bit compiler environment.
I can understand that, but the problem is that in order to write proper test of the 16 bit environment I need to include the definitions of the structs that make up the 16 bit execution environment e.g. wine/winbase16.h and others. That file (and probably also the others) will in turn include windef.h and winbase.h, which will in turn include winnt.h and so on. Ending up in a problem due to size errors.
Or are you saying that I should change wine/winbase16.h to not include windef.h and winbase.h and make sure that they don't include anything from "windows 32" include files? Or should I duplicate all those file for the test enviroment, so that I have to maintain the same structs in two different files?
Best Regards Morten Rønne