读书人

问个宏定义的有关问题

发布时间: 2014-05-25 17:12:29 作者: rapoo

问个宏定义的问题
if(strcmp( pMsg, "aa ")==0)
INFO( "1\n ");
else if(strcmp( pMsg, "BB "))
INFO( "%d\n ",__LINE__);
else
INFO( "3\n ");

其中的 INFO是这样定义的:
#ifdef _DEBUG
#define INFO printf //调试时调用printf输出内容
#else
#define INFO(fmt,...) ; //非调试时为空语句不输出东西
#endif
结果vs2005编译说:
error C2181: 没有匹配 if 的非法 else
似乎是把 if(xxxx) ; 给优化没了?
要达到#else的时候什么都不做应该怎么定义呢?

[解决办法]
不是优化的问题,是你代码的问题。
改成:
if(strcmp( pMsg, "aa ")==0)
INFO( "1\n ");
else
{
if(strcmp( pMsg, "BB "))
INFO( "%d\n ",__LINE__);
else
INFO( "3\n ");
}
[解决办法]
多了一个分号

读书人网 >VC/MFC

热点推荐