943,719 Members | Top Members by Rank

Ad:
  • C++ Discussion Thread
  • Unsolved
  • Views: 570
  • C++ RSS
Apr 6th, 2008
0

Help me.

Expand Post »
What is the difference between #define n 10 and const int n=10
Reputation Points: 18
Solved Threads: 5
Junior Poster in Training
theausum is offline Offline
59 posts
since Mar 2008
Apr 6th, 2008
0

Re: Help me.

#define is preprocessor directive - it literally tells the preprocessor to replace n with 10 . const is actual C++ - it says that n is a constant of type int that is assigned the value 10. They'll do about the same thing, but are used for different reasons. In this case, n is a horrible choice for the variable name if #define is used because it could allow the preprocessor to insert 10's where you didn't mean for them to be. Another strike against the preprocessor is that it will define the constant globally - where as const follows scope restrictions native to C++.
Last edited by BlackJavaBean; Apr 6th, 2008 at 5:21 am. Reason: Added tags and update explanation
Reputation Points: 13
Solved Threads: 7
Light Poster
BlackJavaBean is offline Offline
38 posts
since Feb 2008
Apr 6th, 2008
2

Re: Help me.

difference b/w const and #define (macro).

1. Type Checking:- macros are not type safe where as const are type safe. since the macros are replaced by definition at the time of preprocessing (which is done before compilation). the storage area of macros is not defined where as const has static storage area.

for example
C++ Syntax (Toggle Plain Text)
  1. #define n 10
  2. int main ()
  3. {
  4. // what would be the behavior of the below code.
  5. cout<< &n<<endl;
  6. return 0;
  7. }

2. macros are error prune
for example the below code
C++ Syntax (Toggle Plain Text)
  1.  
  2. #define max(a,b) ((a>b)?a:b)
  3.  
  4. int main ()
  5. {
  6. int a = 2;
  7. int b = 3;
  8. cout<<max(a++, b)<<endl;
  9. return 0;
  10. }
check the above code. the proper solution to above is to use templates rather than macros for specifying generic operatoins.
[see. Effective C++ for more details.].

so the conclusion is that use consts & templates where necessary don't use macros. .
Last edited by Laiq Ahmed; Apr 6th, 2008 at 8:25 am. Reason: forget to close code tag.
Reputation Points: 113
Solved Threads: 20
Junior Poster
Laiq Ahmed is offline Offline
147 posts
since Jun 2006

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C++ Forum Timeline: C++ homework - read it not what you think!
Next Thread in C++ Forum Timeline: producing plots





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC