A common, but not universal, application requirement, especially for server applications, is that the application must run on some combination of Windows, Linux, and UNIX.1 This requirement leads to the need for “source code portability” whereby:
1 More precisely, “UNIX” means the POSIX functions specified in The Single UNIX Specification (www.opengroup.org/onlinepubs/007908799/). UNIX and Linux implement this specification. In turn, the specification has its historical origins in UNIX.
• There is a single set of source code for all target platforms.
• Macros and build parameters define the target platform, which could be any of the three operating systems, along with choices of processor ...