stdarg.h in winbase.h

Eric Pouech pouech-eric at wanadoo.fr
Wed Sep 3 14:21:40 CDT 2003


Alexandre Julliard wrote:
> "Dimitrie O. Paun" <dpaun at rogers.com> writes:
> 
> 
>>With this patch, we can get rid of the stdarg.h
>>include from winbase.h if it weren't for the
>>FormatMessage() functions:
>>
>>DWORD       WINAPI FormatMessageA(DWORD,LPCVOID,DWORD,DWORD,LPSTR,DWORD,va_list*);
>>DWORD       WINAPI FormatMessageW(DWORD,LPCVOID,DWORD,DWORD,LPWSTR,DWORD,va_list*);
>> 
>>Alexandre, how do we handle this one?
> 
> 
> We have to include stdarg.h everywhere we include winbase.h, about 650
> files at last count. That's why we need some kind of script...
> 
if someone wants to work on this, here's a little comparison of wine's 
headers (on left hand side) and windows (on the right hand side).
I only listed the headers I add on both sides.

it's rather easy to derive from it the list of the things we include in 
our header when we shouldn't.

as the modification on .c files would be minimal (between doing only 
winbase.h compared to do the rest...), it might be better to do it at 
once (we might end up including stdarg, windef and winbase in most of 
our compilation units)

Notes: I dropped windows.h in the comparison, and I didn't have any 
directX SDK at hand to make the comparison with this part of the 
"platform SDK". I also removed all the header inclusion related to packing

A+

-- 
Eric Pouech
-------------- next part --------------
./accctrl.h:#include "wtypes.h"					./accctrl.h:#include "wtypes.h"

./comcat.h:#include "rpc.h"					./comcat.h:#include "rpc.h"
./comcat.h:#include "rpcndr.h"					./comcat.h:#include "rpcndr.h"
./comcat.h:#include "windows.h"					./comcat.h:#include "windows.h"
./comcat.h:#include "ole2.h"					./comcat.h:#include "ole2.h"
./comcat.h:#include "unknwn.h"					./comcat.h:#include "unknwn.h"
./comcat.h:#include "wine/obj_enumguid.h"		      <
./comcat.h:#include "wine/obj_comcat.h"			      <

./commctrl.h:#include "windef.h"			      <
./commctrl.h:#include "winbase.h"			      <
./commctrl.h:#include "wingdi.h"			      <
./commctrl.h:#include "winuser.h"			      <
./commctrl.h:#include "winnls.h"			      <
./commctrl.h:#include "prsht.h"					./commctrl.h:#include "prsht.h"

./commdlg.h:#include "prsht.h"					./commdlg.h:#include "prsht.h"

./compobj.h:#include "objbase.h"				./compobj.h:#include "objbase.h"

./dbghelp.h:#include "windef.h"				      <
./dbghelp.h:#include "winbase.h"			      <
./dbghelp.h:#include "ver.h"				      <
							      <
./dde.h:#include "windef.h"					./dde.h:#include "windef.h"

./digitalv.h:#include "mmsystem.h"			      <
./digitalv.h:#include "windef.h"			      <
							      <
./docobj.h:#include "rpc.h"					./docobj.h:#include "rpc.h"
./docobj.h:#include "rpcndr.h"					./docobj.h:#include "rpcndr.h"
./docobj.h:#include "windows.h"					./docobj.h:#include "windows.h"
./docobj.h:#include "ole2.h"					./docobj.h:#include "ole2.h"
./docobj.h:#include "winbase.h"				      |	./docobj.h:#include "ocidl.h"
./docobj.h:#include "windef.h"				      |
./docobj.h:#include "wingdi.h"				      |	./fci.h:#include "basetsd.h"
./docobj.h:#include "winuser.h"				      |
./docobj.h:#include "ole2.h"				      |	./guiddef.h:#include "string.h"
./docobj.h:#include "oaidl.h"				      |
							      >	./imagehlp.h:#include "wintrust.h"

./imagehlp.h:#include "windef.h"			      <
./imagehlp.h:#include "winbase.h"			      <
./imagehlp.h:#include "ver.h"				      <

./initguid.h:#include "guiddef.h"				./initguid.h:#include "guiddef.h"

./iphlpapi.h:#include "iprtrmib.h"				./iphlpapi.h:#include "iprtrmib.h"
./iphlpapi.h:#include "ipexport.h"				./iphlpapi.h:#include "ipexport.h"
./iphlpapi.h:#include "iptypes.h"				./iphlpapi.h:#include "iptypes.h"

							      >	./iprtrmib.h:#include "mprapi.h"
./iprtrmib.h:#include "ipifcons.h"				./iprtrmib.h:#include "ipifcons.h"

./iptypes.h:#include "time.h"					./iptypes.h:#include "time.h"

./lmaccess.h:#include "lmcons.h"				./lmaccess.h:#include "lmcons.h"     

./lm.h:#include "lmcons.h"					./lm.h:#include "lmcons.h"     
./lm.h:#include "lmerr.h"					./lm.h:#include "lmerr.h"      
./lm.h:#include "lmbrowsr.h"				      <
./lm.h:#include "lmaccess.h"					./lm.h:#include "lmaccess.h"   
							      >	./lm.h:#include "lmalert.h"    
							      >	./lm.h:#include "lmshare.h"    
							      >	./lm.h:#include "lmmsg.h"      
							      >	./lm.h:#include "lmremutl.h"   
							      >	./lm.h:#include "lmrepl.h"     
							      >	./lm.h:#include "lmserver.h"   
							      >	./lm.h:#include "lmsvc.h"      
							      >	./lm.h:#include "lmuse.h"      
./lm.h:#include "lmwksta.h"					./lm.h:#include "lmwksta.h"    
./lm.h:#include "lmapibuf.h"					./lm.h:#include "lmapibuf.h"   
							      >	./lm.h:#include "lmerrlog.h"   
							      >	./lm.h:#include "lmconfig.h"   
							      >	./lm.h:#include "lmstats.h"    
							      >	./lm.h:#include "lmaudit.h"    
							      >	./lm.h:#include "lmjoin.h"     

./lmwksta.h:#include "lmcons.h"					./lmwksta.h:#include "lmcons.h"
							      >	./lmwksta.h:#include "lmuseflg.h"                   

./mapicode.h:#include "winerror.h"				./mapicode.h:#include "winerror.h"

./mapidefs.h:#include "windef.h"			      <
./mapidefs.h:#include "windows.h"				./mapidefs.h:#include "windows.h"
./mapidefs.h:#include "winerror.h"				./mapidefs.h:#include "winerror.h"
./mapidefs.h:#include "objbase.h"				./mapidefs.h:#include "objbase.h"
							      |	./mapidefs.h:#include "compobj.h"
./msacm.h:#include "windef.h"				      |	./mapidefs.h:#include "stddef.h"
./msacm.h:#include "mmsystem.h"				      <
./msacm.h:#include "mmreg.h"				      <
							      <
./msdos.h:#include "wine/windef16.h"			      <
							      <
./ntsecapi.h:#include "winnt.h"				      <

./oaidl.h:#include "rpc.h"					./oaidl.h:#include "rpc.h"
./oaidl.h:#include "rpcndr.h"					./oaidl.h:#include "rpcndr.h"
							      >	./oaidl.h:#include "windows.h"
							      >	./oaidl.h:#include "ole2.h"
./oaidl.h:#include "objidl.h"					./oaidl.h:#include "objidl.h"

./objbase.h:#include "rpc.h"					./objbase.h:#include "rpc.h"
./objbase.h:#include "rpcndr.h"					./objbase.h:#include "rpcndr.h"
./objbase.h:#include "objidl.h"				      <
./objbase.h:#include "stdlib.h"					./objbase.h:#include "stdlib.h"
							      >	./objbase.h:#include "wtypes.h"
							      >	./objbase.h:#include "unknwn.h"
							      >	./objbase.h:#include "objidl.h"
							      >	./objbase.h:#include "guiddef.h"
./objbase.h:#include "cguid.h"					./objbase.h:#include "cguid.h"
							      |	./objbase.h:#include "urlmon.h"
./objidl.h:#include "rpc.h"				      |	./objbase.h:#include "propidl.h"
./objidl.h:#include "rpcndr.h"				      <
./objidl.h:#include "unknwn.h"				      <

./ocidl.h:#include "rpc.h"					./ocidl.h:#include "rpc.h"
./ocidl.h:#include "rpcndr.h"					./ocidl.h:#include "rpcndr.h"
./ocidl.h:#include "windows.h"					./ocidl.h:#include "windows.h"
./ocidl.h:#include "ole2.h"					./ocidl.h:#include "ole2.h"
./ocidl.h:#include "oleidl.h"					./ocidl.h:#include "oleidl.h"
./ocidl.h:#include "oaidl.h"					./ocidl.h:#include "oaidl.h"
./ocidl.h:#include "wine/obj_olefont.h"			      |	./ocidl.h:#include "servprov.h"
./ocidl.h:#include "wine/obj_picture.h"			      |	./ocidl.h:#include "urlmon.h"
./ocidl.h:#include "wine/obj_control.h"			      <
./ocidl.h:#include "wine/obj_connection.h"		      <
./ocidl.h:#include "wine/obj_property.h"		      <
./ocidl.h:#include "wine/obj_oleundo.h"			      <

./ole2.h:#include "windef.h"				      <
./ole2.h:#include "winerror.h"					./ole2.h:#include "winerror.h"
./ole2.h:#include "objbase.h"					./ole2.h:#include "objbase.h"
./ole2.h:#include "oleauto.h"					./ole2.h:#include "oleauto.h"
./ole2.h:#include "oleidl.h"					./ole2.h:#include "oleidl.h"

./oleauto.h:#include "winbase.h"			      <
./oleauto.h:#include "oaidl.h"					./oleauto.h:#include "oaidl.h"

./olectl.h:#include "windef.h"				      <
./olectl.h:#include "ocidl.h"					./olectl.h:#include "ocidl.h"

							      >	./oledlg.h:#include "windows.h"
							      >	./oledlg.h:#include "shellapi.h"
./oledlg.h:#include "commdlg.h"					./oledlg.h:#include "commdlg.h"
./oledlg.h:#include "prsht.h"				      <
./oledlg.h:#include "windef.h"				      <
./oledlg.h:#include "ole2.h"					./oledlg.h:#include "ole2.h"
							      >	./oledlg.h:#include "string.h"
							      >	./oledlg.h:#include "tchar.h"
							      >	./oledlg.h:#include "dlgs.h"           
							      >	./oledlg.h:#include "prsht.h"

./oleidl.h:#include "rpc.h"					./oleidl.h:#include "rpc.h"
./oleidl.h:#include "rpcndr.h"					./oleidl.h:#include "rpcndr.h"
./oleidl.h:#include "windows.h"					./oleidl.h:#include "windows.h"
./oleidl.h:#include "ole2.h"					./oleidl.h:#include "ole2.h"
./oleidl.h:#include "objbase.h"				      |	./oleidl.h:#include "objidl.h"
./oleidl.h:#include "wine/obj_inplace.h"		      <
./oleidl.h:#include "wine/obj_cache.h"			      <
./oleidl.h:#include "wine/obj_oleobj.h"			      <
./oleidl.h:#include "wine/obj_oleview.h"		      <
./oleidl.h:#include "wine/obj_dragdrop.h"		      <

							      >	./propidl.h:#include "rpc.h"
./propidl.h:#include "rpcndr.h"					./propidl.h:#include "rpcndr.h"
./propidl.h:#include "windows.h"				./propidl.h:#include "windows.h"
./propidl.h:#include "ole2.h"					./propidl.h:#include "ole2.h"
./propidl.h:#include "objidl.h"					./propidl.h:#include "objidl.h"
./propidl.h:#include "oaidl.h"					./propidl.h:#include "oaidl.h"

./prsht.h:#include "windef.h"				      <
./prsht.h:#include "wingdi.h"				      <
./prsht.h:#include "winuser.h"				      <
./psapi.h:#include "windef.h"				      <
							      <
./ras.h:#include "windef.h"				      <
./ras.h:#include "lmcons.h"					./ras.h:#include "lmcons.h"

./rpcdce.h:#include "windef.h"				      <
./rpcdce.h:#include "rpc.h"				      <
./rpcdce.h:#include "guiddef.h"					./rpcdce.h:#include "guiddef.h"
./rpcdce.h:#include "rpcdcep.h"					./rpcdce.h:#include "rpcdcep.h"

./rpc.h:#include "windows.h"					./rpc.h:#include "windows.h"
							      >	./rpc.h:#include "basetsd.h"
							      >	./rpc.h:#include "setjmp.h"
							      >	./rpc.h:#include "rpcdce.h"
							      >	./rpc.h:#include "rpcnsi.h"
							      >	./rpc.h:#include "rpcerr.h"
							      >	./rpc.h:#include "rpcmac.h"
./rpc.h:#include "rpcdce.h"					./rpc.h:#include "rpcdce.h"
./rpc.h:/* #include "rpcnsi.h" */			      |	./rpc.h:#include "rpcnsi.h"
./rpc.h:#include "rpcnterr.h"					./rpc.h:#include "rpcnterr.h"
./rpc.h:#include "excpt.h"					./rpc.h:#include "excpt.h"
./rpc.h:#include "winerror.h"					./rpc.h:#include "winerror.h"
							      >	./rpc.h:#include "rpcasync.h"

./rpcndr.h:#include "basetsd.h"					./rpcndr.h:#include "basetsd.h"
./rpcndr.h:#include "rpcdcep.h"				      |	./rpcndr.h:#include "rpcnsip.h"

./rpcproxy.h:#include "basetsd.h"				./rpcproxy.h:#include "basetsd.h"
./rpcproxy.h:#include "guiddef.h"				./rpcproxy.h:#include "guiddef.h"
./rpcproxy.h:#include "winnt.h"				      <
./rpcproxy.h:#include "rpc.h"					./rpcproxy.h:#include "rpc.h"
./rpcproxy.h:#include "rpcndr.h"				./rpcproxy.h:#include "rpcndr.h"
							      >	./rpcproxy.h:#include "string.h"
							      >	./rpcproxy.h:#include "memory.h"

./servprov.h:#include "rpc.h"					./servprov.h:#include "rpc.h"
./servprov.h:#include "rpcndr.h"				./servprov.h:#include "rpcndr.h"
./servprov.h:#include "windows.h"				./servprov.h:#include "windows.h"
./servprov.h:#include "ole2.h"					./servprov.h:#include "ole2.h"
./servprov.h:#include "objbase.h"			      |	./servprov.h:#include "objidl.h"

./setupapi.h:#include "commctrl.h"				./setupapi.h:#include "commctrl.h"

./shellapi.h:#include "windef.h"			      |	./shlguid.h:#include "isguids.h"            
							      >	./shlguid.h:#include "exdisp.h"
							      >	./shlguid.h:#include "shldisp.h"

./shlguid.h:#include "objbase.h"			      <
							      <
./shlobj.h:#include "windef.h"				      <
./shlobj.h:#include "winbase.h"	/* WIN32_FIND_* */	      <
./shlobj.h:#include "ole2.h"					./shlobj.h:#include "ole2.h"
./shlobj.h:#include "oleauto.h"				      <
./shlobj.h:#include "commctrl.h"			      <
./shlobj.h:#include "prsht.h"					./shlobj.h:#include "prsht.h"
./shlobj.h:#include "wincon.h"				      |	./shlobj.h:#include "commctrl.h"   
./shlobj.h:#include "shlguid.h"					./shlobj.h:#include "shlguid.h"
./shlobj.h:#include "wine/obj_enumidlist.h"		      |	./shlobj.h:#include "shtypes.h"
./shlobj.h:#include "wine/obj_shellfolder.h"		      |	./shlobj.h:#include "shobjidl.h"
./shlobj.h:#include "wine/obj_shellview.h"		      <
./shlobj.h:#include "wine/obj_shelllink.h"		      <
./shlobj.h:#include "wine/obj_shellbrowser.h"		      <
./shlobj.h:#include "wine/obj_contextmenu.h"		      <
./shlobj.h:#include "wine/obj_shellextinit.h"		      <
./shlobj.h:#include "wine/obj_extracticon.h"		      <
./shlobj.h:#include "wine/obj_commdlgbrowser.h"		      <
./shlobj.h:#include "wine/obj_dockingwindowframe.h"	      <
./shlobj.h:#include "wine/obj_dragdrophelper.h"		      <

./sipbase.h:#include "mssip.h"					./sipbase.h:#include "mssip.h"

./storage.h:#include "objbase.h"				./storage.h:#include "objbase.h"

./tapi.h:#include "windef.h"				      |	./tapi.h:#include "windows.h"
							      >	./tapi.h:#include "basetsd.h"
							      >	./tapi.h:#include "oaidl.h"

./unknwn.h:#include "rpc.h"					./unknwn.h:#include "rpc.h"
./unknwn.h:#include "rpcndr.h"					./unknwn.h:#include "rpcndr.h"
							      >	./unknwn.h:#include "windows.h"
							      >	./unknwn.h:#include "ole2.h"
./unknwn.h:#include "wtypes.h"					./unknwn.h:#include "wtypes.h"

./urlmon.h:#include "rpc.h"					./urlmon.h:#include "rpc.h"
./urlmon.h:#include "rpcndr.h"					./urlmon.h:#include "rpcndr.h"
./urlmon.h:#include "windows.h"					./urlmon.h:#include "windows.h"
./urlmon.h:#include "ole2.h"					./urlmon.h:#include "ole2.h"
./urlmon.h:#include "winbase.h"				      |	./urlmon.h:#include "objidl.h"
./urlmon.h:#include "objbase.h"				      |	./urlmon.h:#include "oleidl.h"
							      >	./urlmon.h:#include "servprov.h"
							      >	./urlmon.h:#include "msxml.h"

./vfw.h:#include "windef.h"				      <
./vfw.h:#include "mmsystem.h"					./vfw.h:    #include "mmsystem.h"
./vfw.h:#include "wingdi.h"				      |	./vfw.h:    #include "mmreg.h"
./vfw.h:#include "ole2.h"					./vfw.h:#include "ole2.h"
							      >	./vfw.h:    #include "msacm.h"

./winbase.h:#include "stdarg.h"				      <
./winbase.h:#include "basetsd.h"			      <
./winbase.h:#include "windef.h"				      <
./winbase.h:#include "winerror.h"				./winbase.h:#include "winerror.h"

./windef.h:#include "winnt.h"					./windef.h:#include "winnt.h"

./winioctl.h:#include "winnt.h"				      <
							      <
./winnt.h:#include "basetsd.h"				      <
./winnt.h:#include "ctype.h"					./winnt.h:#include "ctype.h"  
./winnt.h:#include "stddef.h"				      |	./winnt.h:#include "basetsd.h"
./winnt.h:#include "string.h"				      <
./winnt.h:#include "ntstatus.h"				      <
./winnt.h:#include "guiddef.h"					./winnt.h:#include "guiddef.h"
							      >	./winnt.h:#include "string.h"
							      >	./winnt.h:#include "string.h"

./winreg.h:#include "winbase.h"				      |	./winreg.h:#include "reason.h"             
./winreg.h:#include "winnt.h"				      <
							      <
./winres.h:#include "winresrc.h"			      <

./winresrc.h:#include "winuser.h"			      |	./winresrc.h:#include "winuser.rh"
./winresrc.h:#include "commctrl.h"			      |	./winresrc.h:#include "commctrl.rh"
./winresrc.h:#include "dde.h"				      |	./winresrc.h:#include "dde.rh"
./winresrc.h:#include "winnt.h"				      |	./winresrc.h:#include "winnt.rh"
./winresrc.h:#include "dlgs.h"					./winresrc.h:#include "dlgs.h"
./winresrc.h:#include "winver.h"				./winresrc.h:#include "winver.h"

./winsock2.h:#include "winsock.h"			      |	./winsock2.h:#include "windows.h"
							      >	./winsock2.h:#include "qos.h"
./winsock2.h:#include "guiddef.h"				./winsock2.h:#include "guiddef.h"
							      >	./winsock2.h:#include "wsipv6ok.h"

./winsock.h:#  include "sys/types.h"			      <
./winsock.h:#  include "time.h"				      <
./winsock.h:#  include "stdlib.h"			      <
./winsock.h:# include "sys/types.h"			      <
./winsock.h:# include "stdlib.h"			      <
./winsock.h:# include "windows.h"				./winsock.h:#include "windows.h"
./winsock.h:# include "windef.h"			      <
./winsock.h:#include "mswsock.h"			      <

./winuser.h:#include "stdarg.h"					./winuser.h:#include "stdarg.h"
							      >	./winuser.h:#include "tvout.h"

./ws2spi.h:#include "winsock2.h"				./ws2spi.h:#include "winsock2.h"

./wtypes.h:#include "rpc.h"					./wtypes.h:#include "rpc.h"
./wtypes.h:#include "rpcndr.h"					./wtypes.h:#include "rpcndr.h"
./wtypes.h:#include "basetsd.h"					./wtypes.h:#include "basetsd.h"
./wtypes.h:#include "guiddef.h"					./wtypes.h:#include "guiddef.h"
							      >


More information about the wine-devel mailing list