Platform-supplied preprocessor

Most C preprocessors symbols describing the OS
E.g. "sun", "linux", "__osf__", "__FreeBSD__", "__OpenBSD__"

Becomes messy when lots of platforms involved

Doesn't detect variants within a particular platform (OS distributions) or local changes
No hope for something like Gentoo Linux

Little chance that the code will work on a never-before-seen platform

Again, good when there are only few options and broad differences between platforms