登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

面包会有的

... ...

 
 
 

日志

 
 

switch语句里,加入for语句,老出现出错提示error C2360: initialization of 'k' is skipped by 'case' label  

2010-08-02 09:32:54|  分类: VC++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

代码摘要:

 

 switch (splitCountA)
 {
 case 0:
   //AfxMessageBox("0");
   break;
 case 1:

 case 6:

  for (int k=1;k<7;k++)
  {
  strtemp.Format("-%d-",k);
  dc.TextOut(rectWnd[k].left,rectWnd[k].top,strtemp,sizeof(strtemp)-1);
  dc.Rectangle(&rectWnd[k]);//画空心的矩形
  }

  dc.SelectObject(pOldBrush);//恢复画刷

  break;
 case 7:
   AfxMessageBox("7");
   break;

 //default:
 // AfxMessageBox("default");
 // break;
 }

出错的提示为一连串的:

error C2360: initialization of 'k' is skipped by 'case' label

原因为:

如果变量定义在switch外面那么生命期才能到达case内部

像楼主的定义方法,a是作用域是switch块,又因为它是在case 1:这个lable后定义的,假设程序运行时n直接匹配case 2:的话,此时a就是未定义的,这就与a的作用域矛盾,所以编译器不允许这样的定义。
可以像2楼的第二种方法那样定义,此时a的作用域是case 1:lable后那个大括号标识的局部域,就不会产生像上边说的矛盾了

解决办法,将case语句段放在花括号{}中,或者将变量的定义放在switch语句外

 

 

switch语句里,加入for语句,老出现出错提示error C2360: initialization of k is skipped by case label - 加菲 - 加菲-高清视频会议软件
  评论这张
 
阅读(2723)| 评论(1)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018