What is a Preprocessor in C/C++?
Have you ever thought about how computers know the commands you are writing? Have you seen that if you type the wrong syntax or data types, then it shows an error? Well, it’s all due to the preprocessor.
For example, the commands like printf, scanf, int, char, float, cout, cin, try, catch, return, >>, <<, ?, if, else etc. All these are defined in header files like #include.
In C/C++, the preprocessor replaces macros with their expansion and is used to make it possible to write one large program using multiple sources. The preprocessor takes the original code and replaces the placeholders with the actual value so that the new code can be further processed by an editor, a compiler, or an interpreter.
The preprocessor programs provide directives that tell the compiler to preprocess the source code before compiling. There are 4 main types of preprocessors:
- Macros
- File Inclusion
- Conditional Compilation
- Other Directives
Macros are defined as a piece of code given some name to a variable for later use. Whenever the compiler sees this, it replaces the code with defined variables and values. It is used by #define directives. For example: #define value 5.
You can also pass it with arguments like: #define value(1,a)(2*a)
File Inclusion: This preprocessor directive tells the compiler to include a file in the source code program. The user can include two types of files:
- Header Files: Such as printf(), scanf(), cout, or cin, etc
- User defined Files: When more and more functionalities are added to the program, then it is advised to divide it into smaller files, hence User-defined files can be included by #include “filename”.
- Conditional Compilation: These are used for Conditional Statements that are required according to User’s requirement. They are mainly used for ifelse, endif, etc.
- Other Directive: The other directives are not commonly used. The #undef directive is used to make program undefined for the previously defined variables or macro. The other type of directive is #pragma startup and #pragma exit. It helps in specifying the functions that are needed to run before program startup and program exit().
Also Read: What are Datatypes and modifiers in C++?