关闭

error: jump to case label 或者 error: crosses initialization of 编译错误

标签: c++编译错误jump to case labelcrosses initializati
128人阅读 评论(0) 收藏 举报
分类:
代码:
int main()
{
    int a =0;
    switch(a)
    {
        case 0: int b = 0;break;
        case 1: break;
        default:break;
    }
    return 0;
}

编译器提示错误:
testswitch.cpp: In function ‘int main()’:
testswitch.cpp:9: error: jump to case label
testswitch.cpp:8: H‘int b’
testswitch.cpp:10: error: jump to case label
testswitch.cpp:8: error:   crosses initialization of ‘int b’

出现这样的提示,你很有可能在某个case标记中定义了局部变量,而后面还有其他的case标记或者default语句。。比如说这里的整形变量b。

看看编译器提示的信息 cross initialization of int b, 什么意思呢, 就是说跳过了变量的初始化,仔细想想,确实是这样,我们在case 0 中定义了变量b,在这个程序中,直到遇到switch的“}”右花括号,b的作用域才终结,也就是说 在case 1 和 default 分支中 变量b依然是可以访问的。考虑这样一种情况,如果switch匹配了case 1,这样case 0的代码被跳过了,那么b就没有定义,如果此时在case 1的代码中访问了b,程序会崩溃的。如果谁也不匹配,执行default也会有同样的危险。

知道了错误的原因,解决起来就很简单了

1,将case 0 标记 的代码用 {}括起来,这样b的作用域在这个花括号内。在其他的case 标记中不能访问。

2. 将 变量b放在 switch外面 定义。
0
0
查看评论

error:jump to case label error:crosses initialization of ' '

#include int main() {    int i;   scanf("%d",&i);   switch (i)   {     case 1:     ...
  • efforever
  • efforever
  • 2015-06-17 21:06
  • 464

error:jump to case label error:crosses initialization of

问题:error:jump to case label error:crosses initialization of 原因:switch ...case() 的case语句语句之后如果有多行定代码,特别是变量定义,最好使用{}来给予约束作用域,负责计算机无法识别作用域。 swi...
  • hqyhqyhq
  • hqyhqyhq
  • 2013-01-10 10:26
  • 717

error:jump to case label [-fpermissive]

菜丝inside [转载]error:jump to case label 代码: int main() { int a =0; switch(a) { case 0: int b = 0;break; case 1: break; default:break; } return 0; } 编...
  • u014492513
  • u014492513
  • 2015-06-25 18:20
  • 5631

编译错误 jump to case label [-fpermissive]

switch case 语句中,在case里定义变量就会出现这种编译错误;原因是编译器认为这种写法会错过变量的定义,就报错;解决方法:将变量的定义移出switch case;总结:不要在if或case下定义变量;
  • xianxjm
  • xianxjm
  • 2017-06-19 10:16
  • 932

switch语句中编程错误:jump to case label

代码: int main() {     int a =0;     switch(a)     {         case 0: in...
  • CqqZf
  • CqqZf
  • 2016-08-03 21:27
  • 1825

error: jump to case label,crosses initialization of "xxxxxx"

错误提示case跳过变量的初始化
  • wang_song_yan
  • wang_song_yan
  • 2014-08-30 14:01
  • 556

qt编程中遇到的bug之error: jump to case label [-fpermissive]

错误信息如下: C:\Users\q\Desktop\Learn\myitem.cpp:40: error: jump to case label [-fpermissive] C:\Users\q\Desktop\Learn\myitem.cpp:35: error:   cross...
  • baidu_38370610
  • baidu_38370610
  • 2017-07-09 14:46
  • 728

【C/C++】error: jump to case label

problemThe following is not allowed:switch (a){    case 1:        int a = 6;    ...
  • eroswang
  • eroswang
  • 2009-03-03 19:53
  • 10227

error: jump to case label与crosses initialization of"xx"编译错误

前言我过去使用vs下的cl编译程序时,从没遇到过此类错误,今天在Qt 5.3的MINGW版本下编译程序时,却出现 error: jump to case label与crosses initialization of”xx”编译错误。解决方案在switch语句的内部(包括case语句的内部)都不能声...
  • tianyuan521521
  • tianyuan521521
  • 2015-05-31 09:56
  • 804

error C2360: initialization of 'hPen' is skipped by 'case' label的解决方法

<br />在写一个绘制正弦曲线的windows程序时,遇到这个问题。<br />程序代码如下:<br />LRESULT __stdcall WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara...
  • goodlixueyong
  • goodlixueyong
  • 2011-04-11 21:16
  • 3562
    个人资料
    • 访问:11917次
    • 积分:462
    • 等级:
    • 排名:千里之外
    • 原创:32篇
    • 转载:3篇
    • 译文:0篇
    • 评论:6条
    最新评论