C Programming Tutorial
A macro is a segment of code which is replaced by the value of macro. Macro is defined by #define directive. There are two types of macros:
- Object-like Macros
- Function-like Macros
Object-like Macros
The object-like macro is an identifier that is replaced by value. It is widely used to represent numeric constants. For example:
#define PI 3.14
Here, PI is the macro name which will be replaced by the value 3.14.
Function-like Macros
The function-like macro looks like function call. For example:
#define MIN(a,b) ((a)<(b)?(a):(b))
Here, MIN is the macro name.
Visit #define to see the full example of object-like and function-like macros.
C Predefined Macros
ANSI C defines many predefined macros that can be used in c program.
No. | Macro | Description |
---|---|---|
1 | _DATE_ | represents current date in "MMM DD YYYY" format. |
2 | _TIME_ | represents current time in "HH:MM:SS" format. |
3 | _FILE_ | represents current file name. |
4 | _LINE_ | represents current line number. |
5 | _STDC_ | It is defined as 1 when compiler complies with the ANSI standard. |
C predefined macros example
File: simple.c
#include<stdio.h>
int main(){
printf("File :%s\n", __FILE__ );
printf("Date :%s\n", __DATE__ );
printf("Time :%s\n", __TIME__ );
printf("Line :%d\n", __LINE__ );
printf("STDC :%d\n", __STDC__ );
return 0;
}
Output:
File :main.c
Date :Jul 12 2018
Time :15:10:03
Line :6
STDC :1
Macros :
- Macro is a process where an identifier in a program is replaced by a predefined string or value.
- #define is a preprocessor statement and is used to define macros.
Syntax:
Form 1 : (simple macro)
#define identifier predefined_string or value
Example :
#define pf printf
#define sf scanf
C – MACRO EXAMPLE PROGRAM :
#include<stdio.h>
#include<conio.h>
#define pf printf
#define sf scanf
#define vm void main()
#define cls clrscr
#define gt getch
#define val 100
void main()
{
int n;
cls();
printf("Enter a number : ");
scanf("%d",&n);
printf("Given Number = "%d",n);
p("\nval = %d",val);
getch();
}
Form 2 : (complex macro or macro with arguments)
Syntax:
#define identifier(arg-1,arg-2,……….arg-n) definition
Example :
#define square(x) x*x
C – COMPLEX MACRO EXAMPLE PROGRAM :
#include<stdio.h>
#include<conio.h>
#define square(x) x*x
void main()
{
int n,s;
clrscr();
printf("Enter a number : ");
scanf("%d",&n);
s=square(n);
printf("Square of given number = %d",s);
getch();
}
Difference between function and macro :
Function is a self contained block of statements. | Macro is a preprocessor statement. |
---|---|
Function replaces its return value | Macro replaces its definition. |
We can use only specified data types in functions. | In Macros Data types are generic. |
Execution speed of function is less. | Execution speed of Macro is more compared to function. |
C – MACRO EXAMPLE PROGRAM :
#include<stdio.h>
#include<conio.h>
//#define square(x) x*x
//#define square(x) (x*x)
void main()
{
int n;
n=100/square(5);
printf("n = %d",n);
getch();
}