C Language: Preprocessors

The statements starting with the special symbol # are known as preprocessors statements or preprocessor directives.

Preprocessor statements are processed before the program goes to the compiler for processing.

Using preprocessors following can be performed

  • Macro definitions
  • Macros with arguments
  • Conditional compilation
  • File inclusion

Macro definitions

  • “#define” statement helps us to define a macro.
  • Macro once defined becomes a constant.
  • Its value cannot be changed during the execution of the program.
  • If we try to change the value an error will get generated.
  • Macro definition is not terminated by semicolon.
  • Each macro name in the program is substituted by the macro value before the program goes to the compiler for compilation.

Example:

#define a 10
#define limit 100
#define num int
#define pi 3.1415

#define c clrscr()
#define p printf
#define g getch();

Question:
Which is better and why?

(a) #define pi 3.1415
(b) float pi=3.1415;

Ans:
(a) is better, as it becomes a symbolic constant its value cannot be changed during the execution of the program and if we try to change the value an error will get generated.

Example:1

#include<stdio.h>
#define limit 100
int main()
{
    int i;
    for(i=1;i<=limit;i++)
    {
        printf("%d ",i);
    }
    return(0);
}

Example:2

#include<stdio.h>
#include<conio.h>
#define p printf
#define s scanf
//#define c clrscr();
#define g getch()
#define num int
#define hello int
#define ankur main()

hello ankur
{
    num a,b;
    //c
    p("enter any number ");
    s("%d",&a);
    b=a*a;
    p("square is %d\n",b);
    g;
    return(0);
}
/* Output */
enter any number 2
square is 4

Example:3

#include<stdio.h>
#include<conio.h>
#define begin {
#define end }
#define bs (
#define be )
#define hello void
#define mukesh main
#define p printf("hello");
//#define c clrscr();
#define g getch();
hello mukesh bs be
begin
//c
p
g
end
/* Output */
hello

Example:4

#include<stdio.h>
#include<conio.h>
#define c {
#define g }
#define a void
#define b main()
#define e printf("Hello How are you");
//#define d clrscr();
#define f getch();
a b c //d
e f g
/* Output */
Hello How are you

Example:5

#include<stdio.h>
#include<conio.h>
#define a void
//#define b main(){clrscr();printf("hello");getch();}
#define b main(){printf("hello");getch();}
a b
/* Output */
hello

Example:6

#include<stdio.h>
#include<conio.h>
//#define a main(){clrscr();printf("hello");getch();return(0);}
#define a main(){printf("hello");getch();return(0);}
a
/* Output */
hello

C Language Programming Tutorial

C Language Tutorial Home     Introduction to C Language     Tokens     If Condition      goto statement and Labelname     Switch Statements     For loop     While Loop     Do while loop     break and continue     Functions     Recursion     Inbuild Functions     Storage Classes     Preprocessor     Arrays     Pointers     Structures and Unions     File Handling     Projects