This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Don't claim GCC predefines __POSIX__
> >> How do you test that you are on a POSIX compliant system?
> >
> > Practically, run autoconf tests for the features you care about,
> > which are unlikely to be 100% conformance. Â?For 100% conformance,
> > run a conformance testsuite - or if anyone does POSIX
> > certification, look at a list of certified systems.
>
> I fully understand the complexity of saying a system is or is not
> fully POSIX is not trivially detectable by the compiler.
>
> One can get quite far by checking for __POSIX_VERSION__ as well
> if using autoconf tests is to heavy.
I presume you meant _POSIX_VERSION. The previous paragraph of the
manual (before the one I propose to remove) says:
Right, thanks.
@strong{Usage Note:} Don't try to test whether the system
supports POSIX by including @file{unistd.h} and then checking
whether @code{_POSIX_VERSION} is defined. On a non-POSIX system,
this will probably fail because there is no @file{unistd.h}. We
do not know of @emph{any} way you can reliably test at
compilation time whether your target system supports POSIX or
whether @file{unistd.h} exists.
Maybe, given that you have POSIX, testing the version that way is
more useful.
It is a quick way to check though, so if a system is not POSIX
(i.e. doesn't have <unistd.h>, and doesn't define _POSIX_VERSION) then
it will fail. If it works, then you should (in theory) have a POSIX
comformant system. Testing for __POSIX__ was really never safe
anyway, since a POSIX never defined that macro.