在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中的case语句中声明变量编译出错的解决方案的更多相关文章
- 在switch中的case语句中声明变量会被提前
原文链接:http://my.oschina.net/u/2000201/blog/514384 本人今天在编写工具类时,无意之间发现,在Java的Swith语句的case语句中声明局部变量时出现了一 ...
- switch case语句中能否作用在String,long上
在之前的eclipse中使用switch的case语句时是只能为(byte,short,char)int类型或枚举类型.但在jdk1.7以后 在case语句中是可以使用String 以及long 等类 ...
- Shell编程-07-Shell中的case语句
目录 基本语法 case示例 case语句总结 case语句相当于多分支的if/elif/else语句,而在使用case会让脚本看起来更简单工整.在case语句中,程序会将获取到的值与case ...
- Mybatis中动态SQL语句中的parameterType不同数据类型的用法
Mybatis中动态SQL语句中的parameterType不同数据类型的用法1. 简单数据类型, 此时#{id,jdbcType=INTEGER}中id可以取任意名字如#{a,jdbcType ...
- MyBatis 中实现SQL语句中in的操作 (11)
MyBatis 中实现SQL语句中in的操作 概括:应用myBatis实现SQL查询中IN的操作 1.数据库结构及其数据 2.mapper.xml文件 <?xml version="1 ...
- switch...case... 语句中的类型转换
switch语句对case表达式的结果类型有如下要求: 要求case表达式的结果能转换为switch表示式结果的类型 并且如果switch或case表达式的是无类型的常量时,会被自动转换为此种常量的默 ...
- swtich和case语句中,定义变量要加花括号
转自: http://blog.chinaunix.net/uid-27103408-id-3340702.html http://www.xuebuyuan.com/2070170.html swi ...
- 在 case 语句中使用字符串-转
http://www.cnblogs.com/del/archive/2008/07/08/1237856.html 非常遗憾 Delphi 的 case 语句不支持字符串, 但我觉得这也可能是基于效 ...
- MySQL中的case when 中对于NULL值判断的坑
sql中的case when 有点类似于Java中的switch语句,比较灵活,但是在Mysql中对于Null的处理有点特殊 Mysql中case when语法: 语法1: CASE case_val ...
随机推荐
- nexus开机启动
在/etc/init.d目录下创建nexus文件 #!/bin/bash #chkconfig: #description:nexus3 #processname:nexus3 export JAVA ...
- HAProxy与Nginx区别
1)HAProxy对于后端服务器一直在做健康检测(就算请求没过来的时候也会做健康检查):后端机器故障发生在请求还没到来的时候,haproxy会将这台故障机切掉,但如果后端机器故障发生在请求到达期间,那 ...
- Mybatis基本介绍
Mybatis介绍 1.Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了goog ...
- 解决WORD2013输入时光标老跳的问题
Word2013有一个非常影响使用的bug.就是在编辑文档时,光标会乱跑,影响输入.微软给出了一个kb2863845 160多MB的补丁包,安装完成后就可以解决这个问题. 补丁下载链接: 链接:ht ...
- Cheatsheet: 2017 03.01 ~ 03.31
Web New Year, New Blog Day 10 - Using JetBrains Rider with a .NET Core Console Application JavaScrip ...
- Windows下etc文件夹
etc etcetera[ɛtsɛtərə]缩写 等等的意思 放置一些其他文件
- COGS 有标号的二分图计数系列
其实这三道题都是不错的……(虽然感觉第三题略套路了……) 分别写一下做法好了…… COGS2392 有标号的二分图计数 I 这个就很简单了,Noip难度. 显然可以直接认为黑点和白点分别位于二分图两侧 ...
- 前端之body标签中相关标签(一)
一 字体标签 字体标签包含:h1~h6.<font>.<u>.<b>.<strong><em>.<sup>.<sub& ...
- FastJson 常见问题
一.场景 在使用序列化的时候,Object里包含了两个一模一样的对象,所以解析的时候,只有第一个能解析出来,另外一个无法显示. 查看了json的序列化源码,发现是DisableCircularRefe ...
- 使用Calendar加一天,减一天
public class Test { public static void main(String[] args) { Calendar c=Calendar.getInstance(); Simp ...