#这个C++宏的意思是什么:
#define ASSERT(expr) \
{if (!(expr)){CM_ERROR_TRACE("assert "<< #expr <<" failed"); assert(expr);} }
Run Code Online (Sandbox Code Playgroud)
这是"字符串化"运算符.在宏中,if x是一个宏参数,然后#x求值为文本的带引号的字符串文字表示x.例如,宏
#define STRINGIZE(x) #x
Run Code Online (Sandbox Code Playgroud)
在这方面评估
STRINGIZE(2 + 3 + 4)
Run Code Online (Sandbox Code Playgroud)
扩展到
"2 + 3 + 4"
Run Code Online (Sandbox Code Playgroud)
在这里,宏是
#define ASSERT(expr) \
{if (!(expr)){CM_ERROR_TRACE("assert "<< #expr <<" failed"); assert(expr);} }
Run Code Online (Sandbox Code Playgroud)
#expr这里的使用意味着如果表达式没有计算为true,它将打印出宏参数的字符串表示.例如
ASSERT(myFunction())
Run Code Online (Sandbox Code Playgroud)
会扩大到
{if (!(myFunction())){CM_ERROR_TRACE("assert " << "myFunction()" << " failed"); assert(myFunction());} }
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
257 次 |
| 最近记录: |