In this tutorial, you will learn in depth about C programming preprocessor directives that modify source code before it is compiled by the compiler.

As the name implies C programming preprocessor directives are the instructions that execute our program before it is compiled.
Many of write C program without knowing what actually preprocessor is. In this article, we will explore preprocessor directives in C programming.
While writing C program, the first line of code that starts with # is called preprocessor directive and only comments and whitespace character are allowed before it.
Every C program starts with #include preprocessor directive with .h extension file known as a header file.
This causes the copy of a file to be placed in place of the directive. There are two ways to write #include directive. These are
#include <filename>
#include "filename"
Following is the difference between these two:
#include <filename>
This command is used for standard library headers. It searches for header file in the specified list of directories only.
See the list of standard library headers.
#include "filename"
This command searches for the file in the current directory as well as the specified list of directories. This method is used for programmer-defined headers.
[adsense1]
The #define directive is used to create symbolic constants and the statement is called macro.
#define identifier replacement_text
When a symbolic constant is defined in the program, all subsequent identifier or symbol is replaced by replacement_text.
For example:
#define SIZE 10
When symbolic constant SIZE appears in the program it is replaced with 10.
/* Program to calculate the are of a circle */
#include <stdio.h>
#define PI 3.1415
int main()
{
float r, area;
printf("Enter radius: ");
scanf("%f", &r);
area = PI * r * r;
printf("\nArea of circle= %.3f", area);
return 0;
}
Output
Enter radius: 4.2 Area of circle= 55.416
Explanation
In the above program, we have defined symbolic constant PI which value is 3.1415.
If the value of constant needs to be modified in the program, it can be done simply by changing the value of PI in #define directive.
< >.
#include<stdio.h>
#define OR ||
#define AND &&
int main()
{
int x, y, z;
printf("Enter values of x, y and z: ");
scanf("%d %d %d", &x, &y, &z);
if((x > 5 AND y < 10) OR (z > 100))
printf("Max will get apple.");
else
printf("Max will get punishment.");
return 0;
}
Till now we have used simple macros with no arguments. Interestingly macros can have arguments.
#include <stdio.h>
#define CIRCLE_AREA(r) (3.1415 * r * r)
int main()
{
float x = 4.2;
printf("Area of circle= %.3f", CIRCLE_AREA(x));
return 0;
}
Output
Enter radius: 4.2 Area of circle= 55.416
Explanation
In the above program, wherever there is CIRCLE_AREA(r) it is replaced with 3.1415 * r * r. The variable x in CIRCLE_AREA(x) is subsituted to r.
We can easily undefine the defined macro using the following statement.
#undef identifier
This is very useful when we want to restrict the use of the defined macro in other parts of the program.
Example:
#undef SIZE
CIRCLE_AREA and (r) in the definition.