如此匹配的if和else,程序怎么会竟然说不匹配呢?

ScytheV 2010-12-26 02:22:35
出问题的代码是这样的:

if(cmp_result==0)
return EQUAL;
else if(cmp_result>0)//这里提示error C2181: illegal else without matching if
return B_SMALLER;
else//这里提示error C2181: illegal else without matching if
return A_SMALLER;

百思不得其解,如此简单的一段代码,怎么会报这种错误?谁能赐教一下?

这个函数的完整代码如下:

#define A_SMALLER 1;
#define B_SMALLER 2;
#define EQUAL 0;
int compare(char a[], char b[])//a和b比大小的函数,我知道这样写奇怪,但它是有特殊用途的
{
char *conc1,*conc2;
int cmp_result;
memset(conc1,'\0',20);
memset(conc2,'\0',20);
strcpy(conc1,a);
conc1=strncat(conc1,b,strlen(b));
strcpy(conc2,b);
conc2=strncat(conc2,a,strlen(a));
cmp_result=strcmp(conc1,conc2);
if(cmp_result==0)
return EQUAL;
else if(cmp_result>0)
return B_SMALLER;
else
return A_SMALLER;
}
...全文
204 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
prohibit 2010-12-26
  • 打赏
  • 举报
回复
#define A_SMALLER 1;
#define B_SMALLER 2;
#define EQUAL 0;
...
if(cmp_result==0)
return EQUAL;
else if(cmp_result>0)
return B_SMALLER;
else
return A_SMALLER;
...
//这一段按照宏定义展开相当于下面这样,当然报不匹配咯:
if(cmp_result==0)
return 0;
;
else if(cmp_result>0)//else不匹配
return 2;
;
else//else不匹配
return 1;
;
rollthewong 2010-12-26
  • 打赏
  • 举报
回复
原来是这个原因,这编译器可真能报。
T0Ols 2010-12-26
  • 打赏
  • 举报
回复
. [Quote=引用 4 楼 binqray 的回复:]
C/C++ code

//无分号
#define A_SMALLER 1
#define B_SMALLER 2
#define EQUAL 0
[/Quote]
King边 2010-12-26
  • 打赏
  • 举报
回复
4楼正解 符号常量不能写;
  • 打赏
  • 举报
回复

//无分号
#define A_SMALLER 1
#define B_SMALLER 2
#define EQUAL 0

  • 打赏
  • 举报
回复
哦,有问题!!

#define A_SMALLER 1;
#define B_SMALLER 2;
#define EQUAL 0;

把后面的分号全部去掉!!!!
  • 打赏
  • 举报
回复
没问题!
chlaws 2010-12-26
  • 打赏
  • 举报
回复
没有不匹配,你贴全代码

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧