| | |
Help me.
Please support our C++ advertiser: Intel Parallel Studio Home
![]() |
#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
•
•
Join Date: Jun 2006
Posts: 147
Reputation:
Solved Threads: 20
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
2. macros are error prune
for example the below code
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.
.
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)
#define n 10 int main () { // what would be the behavior of the below code. cout<< &n<<endl; return 0; }
2. macros are error prune
for example the below code
C++ Syntax (Toggle Plain Text)
#define max(a,b) ((a>b)?a:b) int main () { int a = 2; int b = 3; cout<<max(a++, b)<<endl; return 0; }
[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.
![]() |
Other Threads in the C++ Forum
- Previous Thread: C++ homework - read it not what you think!
- Next Thread: producing plots
Views: 462 | Replies: 2
| Thread Tools | Search this Thread |
Tag cloud for C++
6 api application array arrays assignment based beginner binary c++ c/c++ calculator char char* class classes code coding compile compiler console conversion convert count data database delete developer display dll dynamiccharacterarray email encryption error file format forms fstream function functions game generator givemetehcodez graph iamthwee ifstream image input int java lib list loop looping loops map math matrix memory multidimensional multiple newbie news number numbertoword output pointer problem program programming project python random read recursion recursive reference return rpg search sort sorting string strings struct template templates text tree url variable vector video visual visualstudio win32 windows winsock wordfrequency wxwidgets





