That and the publisher sems to be McGraw here.....hmmm, maybe I''m dumb.
Thnx, I think I''ll really buy that one, especially since you say ALSO and not NO JUST BUY THIS.
That and it''s cheap =)
Macro(???????????)
Imagine you want to print what piece of code is executed as it is executed. One way to do it is to create a string mirroring the code and printing it out :
However, you have to take care to keep the string and the code in synch. Well, that is what the # macro is for : it converts source code into a string that the source code can use.
Which would not buy you much if you couldn't do things with X within the macro itself :
This is what is used in the assert( X ) macro. It tests the value of the expression X, and if it is false, it prints it out and abort().
Edited by - Fruny on November 17, 2001 12:10:13 AM
{ foo = bar + baz; if (debug) std::cerr << "foo = bar + baz" << std::endl;}
However, you have to take care to keep the string and the code in synch. Well, that is what the # macro is for : it converts source code into a string that the source code can use.
#define STRING( X ) #X{ foo = bar + baz; if (debug) std::cerr << STRING(foo = bar + baz) << std::endl;}
Which would not buy you much if you couldn't do things with X within the macro itself :
#define DBG( X ) { X; if( debug ) std::cerr << #X << std::endl; } /* Executes and prints X */{ DBG( foo = bar + baz );}
This is what is used in the assert( X ) macro. It tests the value of the expression X, and if it is false, it prints it out and abort().
Edited by - Fruny on November 17, 2001 12:10:13 AM
For multiline macros use a forward slash \ not a backslash - and wrap the multiple statements in a do while loop
Check out the C Language faq for details: What''s the best way to write a multi-statement macro?
Check out the C Language faq for details: What''s the best way to write a multi-statement macro?
quote:Original post by Sinner_Zero
whats that X for???
To do X.
Remember that X does not necessarily have to be a single variable; it can be a statement (which the preprocessor simply substitutes in place.) For example, in Fruny''s example
foo = bar + baz
is X. The macro therefore ensures that X is executed, and then only if debug is specified is the rest executed.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement