问个宏定义的有关问题

问个宏定义的问题
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 ");
}
------解决方案--------------------
多了一个分号