Mondjuk az 'unix' az egy predefiniált macro :http://gcc.gnu.org/onlinedocs/cpp/System_002dspecific-Predefined-Macros…
"it is common to find unix defined on Unix systems."
De ugye ez nem kötelező dolog, csak "common", viszont __unix__ van minden unix rendszeren...
A fenti szöveg szerint ki kéne próbálni a gcc -t -ansi vagy -std(xx) kapcsolókkal is.
Ennek most nem állok neki. :)
Lényeg a lényeg, hogy a fenti kód kitűnő példa arra, hogy hogyan lehet olyan kodot írni, amik olyan undefined compiler feature-kra támaszkodnak, ezért a program futása bizonytalan. :)
Az idéztt leírás utolsó két sora:
"We are slowly phasing out all predefined macros which are outside the reserved namespace. You should never use them in new programs, and we encourage you to correct older code to use the parallel macros whenever you find it. We don't recommend you use the system-specific macros that are in the reserved namespace, either. It is better in the long run to check specifically for features you need, using a tool such as autoconf."
Tehát lehet, hogy a FreeBSD-s gcc-en még benne van, az OSX-es gcc-ből pedig már kigyomlálták az 'unix' makrót, ennyi az egész.