macros in c
A macro is a segments of code which is replace by the value of macro. Marco is defined by #define directive. There are two type of macros
1. Object like macro
2. function like macro
object like macro:
The genral syntax is:
#define macro_name macro_expension
In the above example The macro_name is any valid C identifier. and it is write genrally in capital letters to distinguish it from others variable
The macro_expansion can be any text. There should be space necessary between macro name and macro expansion.The C preprocessor replaces all the occurrences of the micro_name with the macro_expansion
let us take some examples of #define directive
#define FALSE 0
#define TRUE 1
#define PI 3.14556
#define AGE 18
firstly C preprocessor searches for macro_name in the c program and replaces it with macro_expansion.
whenever the macro name TRUE appers in the code, then it is replace by 1 so also these types of constants known as symbolic constants.
in the above example also we define constant on macro_name PI so whenever mecro_name PI appears in the code it is replace by 3.14556 and so on we can also define any string constant.
STR “Real power of c are Macros”
main()
{
printf(STR);
0;
}
|
function like macros:
The #define directive can also used to define macros with parameters. The general syntax is
#define macro_name(par1,par2,par3,…..) macro_expansion
in the above example par1,par2,par3 are the formal parameters and the macro_name is replaced with the macro_expansionand and the formal parameters are replaced by the actual parameters pass in the micro call
take the example when we define the macros
,
MUL(x,y) ((x)*(y))
SUB(x,y) ((x)-(y))
|
/*program to understand macros with arguments */
SUB(x,y) ((x)-(y))
PROD(x,y) ((x)*(y))
main()
{
a,b,x=6,y=3;
a=PROD(x,y);
b=SUB(x,y);
printf("a=%d and b=%d",a,b);
0;
}
|