Traditional Preprocessor Usage
Defining numeric constants (#define MAX_SIZE 1000)
Enumerating symbolic constants with no intrinsic value (#define ERROR 0, #define OK 1)
Defining code to avoid function calling overhead
Defining commonly used type-independent code