Mark Campbell <mark.campbell@ucs-software.co.za> writes:
> I found the following:
> u_long ntohl __P((u_long)), htonl __P((u_long));
> u_short ntohs __P((u_short)), htons __P((u_short));
> #define htonl(x) (x)
> #define ntohs(x) (x)
> #define htons(x) (x)
> in /usr/include/sys/byteorder.h
Hmm ... you could add "#include <sys/byteorder.h>" but I fear you're
going to need that in a lot of places. The Single Unix Spec specifies
that these functions are to be declared in <arpa/inet.h>, and that
seems to be where most systems put 'em, because I can't recall having
heard many previous complaints about this sort of failure. The shortest
route to success might be to modify your local copy of
/usr/include/arpa/inet.h to include sys/byteorder.h, instead.
BTW, it could be that arpa/inet.h already does include sys/byteorder.h,
but only when some configuration symbol is defined. In that case you
might want to force the configuration symbol instead. Compare HPUX,
where we do
CPPFLAGS="-D_XOPEN_SOURCE_EXTENDED"
in order to get access to a reasonable set of predefined symbols ...
regards, tom lane