在switch中的case语句中声明变量编译出错的解决方案

在switch中的case语句中声明变量编译的问题

先来看段代码,别管什么意思:

case 10: 



int i = 0, j = 0;



for (i = 0; i < 11; i++)



recive_phone[i] = msgbuf.text[i];



recive_phone[i] = '\0';



printf("%s文件%s函数%d行:接收端号码:%s\n", __FILE__



, __FUNCTION__, __LINE__, recive_phone);



for (j = 0; msgbuf.text[i] != '\0' && j < 12; i++,j++)



center_phone[j] = msgbuf.text[i];



center_phone[j] = '\0';



printf("%s文件%s函数%d行:发送端号码:%s\n", __FILE__



, __FUNCTION__, __LINE__, center_phone);



break;

我在case:break中声明了变量,结果gcc编译时就提示:

error: a label can only be part of a statement and a declaration is not a statement

有下面三种方法处理:

1、将变量定义放到case:break外面;

2、将case:break中间的语句用{}包含;

case 10: {



int i = 0, j = 0;



for (i = 0; i < 11; i++)



recive_phone[i] = msgbuf.text[i];



recive_phone[i] = '\0';



printf("%s文件%s函数%d行:接收端号码:%s\n", __FILE__



, __FUNCTION__, __LINE__, recive_phone);



for (j = 0; msgbuf.text[i] != '\0' && j < 12; i++,j++)



center_phone[j] = msgbuf.text[i];



center_phone[j] = '\0';



printf("%s文件%s函数%d行:发送端号码:%s\n", __FILE__



, __FUNCTION__, __LINE__, center_phone);



}



break;

注意case后{}括号

3、在“case:”后面加“;”处理。

case 10: ;



int i = 0, j = 0;



for (i = 0; i < 11; i++)



recive_phone[i] = msgbuf.text[i];



recive_phone[i] = '\0';



printf("%s文件%s函数%d行:接收端号码:%s\n", __FILE__



, __FUNCTION__, __LINE__, recive_phone);



for (j = 0; msgbuf.text[i] != '\0' && j < 12; i++,j++)



center_phone[j] = msgbuf.text[i];



center_phone[j] = '\0';



printf("%s文件%s函数%d行:发送端号码:%s\n", __FILE__



, __FUNCTION__, __LINE__, center_phone);



break;

你可能感兴趣的:(switch)