Join us Now |  Forgot Password? | Forgot UserName?


Learn step by step

C Programming Preprocessor and Macros

Preprocessor extends the power of C programming language. Line that begin with # are called preprocessing directives.

Use of #include

Let's consider very common preprocessing directive as below:

#include <stdio.h>

Here, "stdio.h" is a header file and the preprocessor replace the above line with the contents of header file.

Use of #define

Preprocessing directive #define has 2 forms. The first form is:

#define identifier token_string

token_string part is optional, but used almost every time in program.

#define pi 3.1415 /*speed of light in m/s */

The token string in above line 3.1415 is replaced in every occurance of symbolic constant pi.

C Program to find area of a circle. [Area of circle=pr2]

#include <stdio.h>
#define PI 3.1415
int main(){
int radius=4;
float area;
return 0;

Syntactic Sugar

Syntactic sugar is the alteration of programming syntax according to the will of programmer. Example:

#define L <

Every time the program encounters L, it will be replaced by <.

Second form of preprocessing directive with #define is:

Macros with argument

Preprocessing directive #define can be used to write macro definitions with parameters as well in the form below:

#define identifier(identifier 1,.....identifier n) token_string

Again, the token string is optional but, are used in almost every case. Let's consider an example of macro definition with argument.

#define area(r) (3.1415*r*r)

Here, the argument passed is r. Every time the program encounters area(argument), it will be replace by (3.1415*argument*argument). Suppose, we passed (r1+5) as argument then:

area(r1+5) expands to (3.1415*(r1+5)(r1+5))

#include <stdio.h>
#define PI 3.1415
#define area(r) (PI*r*r)
int main(){
int radius;
float area;
printf("Enter the radius: ");
return 0;
Predefined Macros in C language
Predefined macro Value
__DATE__String containing the current date
__FILE__String containing the file name
__LINE__Integer representing the current line number
__STDC__ If follows ANSI standard C, value is a nonzero integer
__TIME__String containing the current date.
How to use predefined Macros?
Find the current time

#include <stdio.h>
int main(){
printf("Current time: %s",__TIME__); //calculate the current time

Related Videos