Preprocessing

The preprocessor obeys commands that start with # (Preprocessor Directives)
Directives are commands that can edit and modify the program before compilation
e.g., #include, #define

Compiling

The compiler translates the output of the preprocessor into machine code
All the comments in the code are replaced with a space

Linking

Linker combines object code with additional code to generate an executable program
This process includes the addition of library functions