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