在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;
上一篇:selenium1,selenium2,watir的比较


下一篇:Paxos算法浅析