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, 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, for more information.