The man page for socket on Linux says you need both, but you can get away
without it.
It's easy enough to test if a platform does the sane thing:
[andrew@Thor andrew]$ echo '#include <sys/socket.h>' > blurfl.c
[andrew@Thor andrew]$ gcc -E -M blurfl.c
blurfl.o: blurfl.c /usr/include/sys/socket.h /usr/include/features.h \
/usr/include/sys/cdefs.h /usr/include/gnu/stubs.h \
/usr/include/sys/uio.h /usr/include/sys/types.h \
[snip]
Probably the best bet is just include sys/types.h just before any place
sys/socket.h is included, no? Should be harmless enough.
cheers
andrew
Tom Lane wrote:
> Peter Eisentraut <peter_e@gmx.net> writes:
>> Rod Taylor writes:
>>>> First thought that comes to mind is that <sys/socket.h> may require
>>>> something else to be included first --- maybe <sys/types.h> ?
>>>
>>> That did it. It's a little curious that sys/socket.h doesn't mention
>>> that anywhere though.
>
>> Because it shouldn't be so. Can you look in config.log what the real
>> reason of the failure was? Maybe it's a bug in FreeBSD.
>
> It's been true for years that <sys/socket.h> requires <sys/types.h> on
> some platforms. How do you think I knew what to recommend? There's no
> point in arguing about it, it's just a fact.
>
> regards, tom lane
>