RFC: Compiling as 16 bit

Alexandre Julliard julliard at winehq.org
Thu Sep 2 14:21:18 CDT 2010


Morten Rønne <morten.roenne at 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.

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list