Re: Critical typedef redefinitions
| From: | Frank M. Kromann | Date: | Mon, 03 Jan 2005 20:39:00 +0000 |
| Subject: | Re: Critical typedef redefinitions | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-14266@lists.php.net to get a copy of this message | ||
Hi,
Adding these two lines to main/win95nt.h kills these warnings with vs 6
typedef int socklen_t;
#define HAVE_SOCKLEN_T 1
- Frank
> We only support the MSVC compiler and libc under windows (there are
> plenty of quirks and assumptions made about it for the win32 build).
>
> Changing that typedef is slightly tricky; I left it as it was because
> there were compilation problems using older versons of MSVC and the
> platform SDK, and this redefinition is benign.
>
> If you can test you proposed change with MSVC 6, VS.Net and your
> VectorC compiler and make sure that it all still works, then we can
> commit it.
>
> --Wez.
>
> On Sun, 02 Jan 2005 11:41:32 +0100, David Strauss <kintaroZ@msn.com>
wrote:
> > Hi!
> >
> > There is a small problem in cgi_main.c preventing it to be compiled
> > properly
> > with some compilers.
> >
> > WS2tcpip.h will get included into cgi_main.c by following inclusion
chain:
> > cgi_main.c <- php_standard.h <- fsock.h <- php_network.h <-
WS2tcpip.h
> >
> > Since php.h is included several lines before, socklen_t is already
defined
> > as:
> > php.h (151): typedef unsigned int socklen_t;
> >
> > Now WS2tcpip.h gets included and tries to redefine socklen_t as:
> > WS2tcpip.h (593): typedef int socklen_t;
> >
> > I successfully tested it with the VectorC compiler, where this lead to
a
> > terminal error.
> >
> > - David
> >
> > Addendum:
> > If you take a look into the CVS snapshot build log, you'll probably
see
> > this
> > warning quite a lot of times (58x according to my editor):
> > C:\\Program Files\\Microsoft SDK\\Include\\.\ws2tcpip.h(593) :
warning
> > C4142: benign redefinition of type
> >
> > Since this occurs throughout the whole build, the easiest solution is
> > proabably
> > to just change the lines 150-152 in php.h to something like this:
> >
> > #ifndef HAVE_SOCKLEN_T
> > # ifdef PHP_WIN32
> > typedef int socklen_t;
> > # else
> > typedef unsigned int socklen_t;
> > # endif
> > #endif
> >
> > --
> > PHP Internals - PHP Runtime Development Mailing List
> > To unsubscribe, visit: http://www.php.net/unsub.php
> >
> >
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>