关于C语言switch的问题

switch(a){
case 1:
....................
....................
....................
break;
case 2:
break;
}
 
在GCC下编译会出现如下错误:
error: a label can only be part of a statement and a declaration is not a statement
但加上如下括号后,就没有错误了,这是为什么?编译器的问题?
switch(a){
case 1:

....................
....................
....................

break;
case 2:
break;
}

case1:
//此块代码不能再声明变量,如果你声明变量就会报错,除非用括号括起来,这是编译器的问题,也可以说是C语言的规定。写代码的时候注意就成了。就像C语言再声明的时候不能赋值一样,记住就好了。
break;
希望对你有所帮助。追问

找到了原因,我在case下面定义了变量,并给它赋了初值,当把定义和赋值分开就好了,或者是加上大括号。谢谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-15
你在case语句中声明变量了?你可以把变量声明到顶部,或者加大括号声明在case1中。
第2个回答  2011-11-15
case1 里面有什么啊 都没看见 怎么知道什么问题
第3个回答  2011-11-15
不是编译器的问题,是你case 1里面的内容有问题,如果需要进一步解答,请贴出case 1里面的内容,或详细说明里面的内容。。。
第4个回答  2011-11-15
可能是!
相似回答