RFC: Compiling as 16 bit

Morten Rønne morten.roenne at tdcadsl.dk
Thu Sep 2 14:11:14 CDT 2010

This is related to the creation of the DOS test programs for which I 
have sent another mail.

But this is a more generic question relating to the fact that openwatcom 
is a 16 bit compiler while gcc (of course) is a 32 bit compiler.

Currently this have lead me to drop the inclusion of the files windef.h 
and winbase.h, because the definitions created aren't of the correct 
size (int is 16 bit, not 32 bit and so on).

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
             unsigned NameIsString:1;
             unsigned NameOffset:31;
             unsigned NameOffset:31;
             unsigned NameIsString:1;
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?

Best Regards
Morten Rønne

More information about the wine-devel mailing list