Macro without argument example
#include<stdio.h>
#define OR ||
#define AND &&
int main()
{
int p=10,q=20,r=30;
if((p==10) AND (q<25 OR r>=50))
printf("You are winner!!");
else
printf("You are loser!!");
getch();
return 0;
}
The output of above program would be:
![]()  | 
| Figure: Screen shot of shows macro uses in C program | 
A #define directive could be used even to replace a condition as:
#include<stdio.h>
#define OR ||
#define AND &&
#define RESULT ((p==10) AND (q<25 OR r>=50))
int main()
{
int p=10,q=20,r=30;
if(RESULT)
printf("You are winner!!");
else
printf("You are loser!!");
getch();
return 0;
}
The output of above program would be:
![]()  | |
  | 
A #define directive could be used to replace even an entire C statement.
#include<stdio.h>
#define DISPLAY printf("Yes, I got iT");
int main()
{
DISPLAY;
getch();
return 0;
}
The output of above program would be:
#define DISPLAY printf("Yes, I got iT");
int main()
{
DISPLAY;
getch();
return 0;
}
The output of above program would be:
![]()  | 
| Figure: Screen shot for macro example C program | 
Macro with argument example
#include<stdio.h>
#define SQUARE(p) (p*p)
int main()
{
int n,result;
printf("Enter any number: ");
scanf("%d", &n);
result = SQUARE(n);
printf("Square of %d is %d",n,result);
getch();
return 0;
}
The output of above program would be:
#define SQUARE(p) (p*p)
int main()
{
int n,result;
printf("Enter any number: ");
scanf("%d", &n);
result = SQUARE(n);
printf("Square of %d is %d",n,result);
getch();
return 0;
}
The output of above program would be:
![]()  | 
| Figure: Screen shot of macro square C program | 
Keep in mind some following point, when you create macro
1. If there are two or more macro expansions then, entire macro expansions should be enclosed within parentheses.
Example:
#define SQUARE(p) p*p  //wrong 
#define SQUARE(p) (p*p)  //right
2. There should be not a blank between the macro template and its argument while defining the macro.
Example:
#define SQUARE (p) p*p  //wrong 
#define SQUARE(p) (p*p)  //right
3. Macro can be split into multiple lines, with a '\'(back slash) present at the end of each line.
Example:
#include<stdio.h>
#define MYPROG for(c=1; c<=10; c++)        \
               {                           \
                if(c==5)                   \
                   printf("Good C blog."); \
               }
int main()
{
 int c;
 MYPROG
 getch();
 return 0;
}
The output of above program would be:
![]()  | 
| Figure: Screen shot for macro split C program | 
Related article:




No comments:
Post a Comment