From: Marius Storm-Olsen Date: Sat, 22 Aug 2009 11:40:15 GMT Subject: Re: [PATCH 09/14] Avoid including windows.h in winansi.c for MSVC build Message-ID: <18cd41840908220440o37cf0909l15ff552abd52e075@mail.gmail.com> In-Reply-To: <3f4fd2640908211416i489b6e23s27cb9cae6a439ddc@mail.gmail.com> On Fri, Aug 21, 2009 at 11:16 PM, Reece Dunn wrote: > 2009/8/21 Junio C Hamano : >> Marius Storm-Olsen writes: >> >>> From: Frank Li >>> >>> compat/msvc.h includes winsock2.h which conflicts with windows.h. >>> msvc.h also defines the oldest Windows API version required. >> >> The first sentence sort-of makes sense; compat/msvc.h will be included by >> git-compat-util.h and including here will bring conflicting >> definitions, so we avoid doing so when on MSC. >> >> The second sentence does not make any sense to me. It may be correctly >> stating a fact (i.e. "defines required WAPI version"), but it is unclear >> what relevance it has to this change to stop including . > > The way things are configured, windows.h is pulling in winsock.h. In > git-compat-util.h, winsock2.h is included which has conflicting > definitions of various functions and data structures. > >> Having said that, the first sentence hints me that perhaps you guys should >> include (conditionally only on windows but not with MSC) not >> from this file, but from git-compat-util.h? > > It would make sense for windows.h to be included in git-compat-util.h. > > According to http://social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/4a90b143-1fb8-43e9-a54c-956127e0c579, > the following will work: > > #define _WINSOCKAPI_ // stops windows.h including winsock.h > #include > #include > > Also, if you define WIN32_LEAN_AND_MEAN, windows.h will pull in a > subset of the Windows header files (which also improves compilation > times). Adding this may prevent it from pulling in winsock.h. This > would be a better approach (and would make sense to go into > git-compat-util.h). > > I don't have access to a Windows dev box at the moment, so can't > verify that this does indeed work. > > - Reece > I'll check this on Monday, and send out a v3 of the series, incorporating the pieces commented on, and clarifying some of the still confusing commit msgs. -- .marius