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 get replaced by space

Linking

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