#
这个 C++ 宏是什么意思:
#define ASSERT(expr) \
{if (!(expr)){CM_ERROR_TRACE("assert "<< #expr <<" failed"); assert(expr);} }
这是“字符串化”运算符。在宏中, ifx
是一个宏参数,然后#x
计算为x
. 例如,宏
#define STRINGIZE(x) #x
在这种情况下评估
STRINGIZE(2 + 3 + 4)
扩展到
"2 + 3 + 4"
这里的宏是
#define ASSERT(expr) \
{if (!(expr)){CM_ERROR_TRACE("assert "<< #expr <<" failed"); assert(expr);} }
这里的使用#expr
意味着如果表达式的计算结果不为真,它将打印出宏参数的字符串表示。例如
ASSERT(myFunction())
会扩大到
{if (!(myFunction())){CM_ERROR_TRACE("assert " << "myFunction()" << " failed"); assert(myFunction());} }
希望这可以帮助!
当宏被预处理 #expr
时将替换为"expr"
.
#
是一个预处理器操作符,它从标记创建一个字符串。
#define STRINGIZE(macro) #macro
STRINGIZE(Hello)
将替换为“你好”