switch(input)
{case 1:
char arr[20];
break;
} //报错:声明不能包含标签
C 语言的语法设计要求:
•标签后必须是语句(如 break;、{...})。
•声明不是语句,因此不能直接跟在标签后。
int x=10; 如果x是全局变量,认为是声明
如果是局部变量,可以认为是声明,也可以认为是语句(MSVC 编译器认为只能是声明)
这导致
switch(input)
{case 1:
char arr[20]="hello world";
break;
}在MSVC 编译器中报错 ,在GCC/Clang不报错
解决办法:使用{}包含case:间的代码(包括break;)
这样创建的变量只能在它所在的case:内使用









网友评论