C and C++ programs often use low-level features of the underlying system, and therefore are often more difficult to make portable to other platforms.
Several standards have been developed to help make your programs more portable. If you write programs with these standards in mind, you can have greater confidence that your programs work on a wide variety of systems. See Language Standards Supported by GCC in Using the GNU Compiler Collection (GCC), for a list of C-related standards. Many programs also assume the Posix standard.
Some old code is written to be portable to K&R C, which predates any C standard. K&R C compilers are no longer of practical interest, though, and the rest of section assumes at least C89, the first C standard.
Program portability is a huge topic, and this section can only briefly introduce common pitfalls. See Portability between System Types in The GNU Coding Standards, for more information.
|• Varieties of Unportability||How to make your programs unportable|
|• Function Portability||Pitfalls with usual functions|
|• Integer Overflow||When integers get too large|
|• Preprocessor Arithmetic|
|• Null Pointers||Properties of null pointers|
|• Buffer Overruns||Subscript errors and the like|
|• Volatile Objects|
|• Floating Point Portability||Portable floating-point arithmetic|
|• Exiting Portably||Exiting and the exit status|