what #
mean in c++ macro:
#define assert(expr) \ {if (!(expr)){cm_error_trace("assert "<< #expr <<" failed"); assert(expr);} }
this "stringizing" operator. in macro, if x
macro parameter, #x
evaluates quoted string literal representation of text of x
. example, macro
#define stringize(x) #x
evaluated in context
stringize(2 + 3 + 4)
expands out to
"2 + 3 + 4"
here, macro is
#define assert(expr) \ {if (!(expr)){cm_error_trace("assert "<< #expr <<" failed"); assert(expr);} }
the use of #expr
here means if expression not evaluate true, print out string representation of macro argument. example
assert(myfunction())
would expand to
{if (!(myfunction())){cm_error_trace("assert " << "myfunction()" << " failed"); assert(myfunction());} }
hope helps!
Comments
Post a Comment