今天写了一些宏,想对齐好看些,加了些空格对齐,结果就悲剧了。。。
#define __MY_ASSERT (msg) LOG(MC_STR2STR(__FUNCTION__)#msg)
#define __MY_ASSERT_IF(p, msg) if(p){__MY_ASSERT(msg);}
void test1()
{
__MY_ASSERT_IF(false, "test");
}
结果报错
错误 2 error C2065: “msg”: 未声明的标识符test.cpp 31
查了半天,原来是因为 __MY_ASSERT 定义后面,多了空格,展开后,就变成
if(false){ msg LOG(msg)}
最后删除空格就好了
#define __MY_ASSERT(msg) LOG(MC_STR2STR(__FUNCTION__)#msg)
#define __MY_ASSERT_IF(p, msg) if(p){__MY_ASSERT(msg);}