Golgappa.net | Golgappa.org | BagIndia.net | BodyIndia.Com | CabIndia.net | CarsBikes.net | CarsBikes.org | CashIndia.net | ConsumerIndia.net | CookingIndia.net | DataIndia.net | DealIndia.net | EmailIndia.net | FirstTablet.com | FirstTourist.com | ForsaleIndia.net | IndiaBody.Com | IndiaCab.net | IndiaCash.net | IndiaModel.net | KidForum.net | OfficeIndia.net | PaysIndia.com | RestaurantIndia.net | RestaurantsIndia.net | SaleForum.net | SellForum.net | SoldIndia.com | StarIndia.net | TomatoCab.com | TomatoCabs.com | TownIndia.com
Interested to Buy Any Domain ? << Click Here >> for more details...

what is the disadvantage of using macros?

Answer Posted / vadivel t

Though, macro has advantages... it hav few disadvantages
too...
------------------------------------------------------------
1.1st disadvantage is, In debugging time u can't see the
value of the macro assigned to it.

So, u have to have ur source file, to fine out the value of
the macro.

But nowadays there are some debuggers which are capable of
showing the value of macro in debugging time.
------------------------------------------------------------
2.Dont use macro for typedef or be cautious before use.

Ex:
lets say, u wanted to have a macro, which can be used to
represent a declaration to an int pointer

#define INTPTR int*

in main..
main()
{
INTPTR a, p;
/*here, our understanding will be 'a' and 'p' both are int
pointers*/
}

but in preprocessor time macro shall be replaced like this -
> int* a, p;
so only 'a' will be treated as int pointer and 'p' shall a
normal int variable.

So tyr to avoid using MACRO for typedef.
use -> typedef int* INTPTR, So that u can achieve desired
result.
------------------------------------------------------------
3.Be carefull while using macro in arithmatic operation.

Ex:

#define MUL(a,b) a*b

In main...
main()
{
int a = 3, b = 4;
....
....
.....
printf("%d", MUL(a+1, b+1));
/*Here u may expect the result 4 * 5 = 20 but the result
would be 8*/
}

lets analise,
in preprocessing time macro shall be replaced as below;

MUL(a+1, b+1) - > 3+1*4+1, so result would be 8.

To avoid the unexpected result.
Define macro lik ...

#define MUL(a,b) (a)*(b)
------------------------------------------------------------

Is This Answer Correct ?    5 Yes 3 No



Post New Answer       View All Answers


Please Help Members By Posting Answers For Below Questions

Explain the advantages and disadvantages of macros.

1145


Is c language still used?

1045


What do you mean by a sequential access file?

1136


What is a method in c?

1214


In C language what is a 'dangling pointer'?

1244


Read the following data in two different files File A: aaaaaaaadddddddd bbbbbbbbeeeeeeee ccccccccffffffff File B: 11111111 22222222 33333333 By using the above files print the following output or write it in the Other file as follows aaaaaaaa11111111dddddddd bbbbbbbb22222222eeeeeeee cccccccc33333333ffffffffffff

3395


What is the purpose of clrscr () printf () and getch ()?

1115


Why c language is called c?

1067


Does * p ++ increment p or what it points to?

1191


write a program fibonacci series and palindrome program in c

1099


What is the incorrect operator form following list(== , <> , >= , <=) and what is the reason for the answer?

1550


Explain about the functions strcat() and strcmp()?

1098


PROGRAM TO WRITE CONTENTS OF 1 FILE IN REVERSE TO ANOTHER FILE,PROGRAM TO COPY 1 FILE TO ANOTHER BY SPECIFYING FILE NAMES AS COMMAND LINE

2090


Write a factorial program using C.

1123


What is a macro in c preprocessor?

1156