在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语句中声明变量编译出错的解决方案的更多相关文章

  1. 在switch中的case语句中声明变量会被提前

    原文链接:http://my.oschina.net/u/2000201/blog/514384 本人今天在编写工具类时,无意之间发现,在Java的Swith语句的case语句中声明局部变量时出现了一 ...

  2. switch case语句中能否作用在String,long上

    在之前的eclipse中使用switch的case语句时是只能为(byte,short,char)int类型或枚举类型.但在jdk1.7以后 在case语句中是可以使用String 以及long 等类 ...

  3. Shell编程-07-Shell中的case语句

    目录 基本语法 case示例 case语句总结     case语句相当于多分支的if/elif/else语句,而在使用case会让脚本看起来更简单工整.在case语句中,程序会将获取到的值与case ...

  4. Mybatis中动态SQL语句中的parameterType不同数据类型的用法

    Mybatis中动态SQL语句中的parameterType不同数据类型的用法1. 简单数据类型,    此时#{id,jdbcType=INTEGER}中id可以取任意名字如#{a,jdbcType ...

  5. MyBatis 中实现SQL语句中in的操作 (11)

    MyBatis 中实现SQL语句中in的操作 概括:应用myBatis实现SQL查询中IN的操作 1.数据库结构及其数据 2.mapper.xml文件 <?xml version="1 ...

  6. switch...case... 语句中的类型转换

    switch语句对case表达式的结果类型有如下要求: 要求case表达式的结果能转换为switch表示式结果的类型 并且如果switch或case表达式的是无类型的常量时,会被自动转换为此种常量的默 ...

  7. swtich和case语句中,定义变量要加花括号

    转自: http://blog.chinaunix.net/uid-27103408-id-3340702.html http://www.xuebuyuan.com/2070170.html swi ...

  8. 在 case 语句中使用字符串-转

    http://www.cnblogs.com/del/archive/2008/07/08/1237856.html 非常遗憾 Delphi 的 case 语句不支持字符串, 但我觉得这也可能是基于效 ...

  9. MySQL中的case when 中对于NULL值判断的坑

    sql中的case when 有点类似于Java中的switch语句,比较灵活,但是在Mysql中对于Null的处理有点特殊 Mysql中case when语法: 语法1: CASE case_val ...

随机推荐

  1. 九度oj 题目1009:二叉搜索树

    题目1009:二叉搜索树 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5733 解决:2538 题目描述: 判断两序列是否为同一二叉搜索树序列 输入: 开始一个数n,(1<=n&l ...

  2. js 字符串转dom 和dom 转字符串

    js 字符串转dom 和dom 转字符串 博客分类: JavaScript   前言: 在javascript里面动态创建标准dom对象一般使用: var obj = document.createE ...

  3. C#语言-03.逻辑控制语句

    a. 逻辑控制语句: i. 条件语句:先对条件判断,然后根据判断结果执行不同的分支 . If 和 if-else:判断“布尔表达式的值”来决定执行那个代码块 a. 语法:if(布尔表达式){ b. 布 ...

  4. Shiro - 关于session

    Shiro Session session管理可以说是Shiro的一大卖点. Shiro可以为任何应用(从简单的命令行程序还是手机应用再到大型企业应用)提供会话解决方案. 在Shiro出现之前,如果我 ...

  5. 卸载或安装程序出现:The feature you are trying to use is on a network resource ...

    卸载或安装程序出现:The feature you are trying to use is on a network resource ... 这种情况可能是因为原先已经安装过这个软件,所以要先卸载 ...

  6. c# 获取文件夹大小

    private long GetDirectorySizeMethod1(string directory) { long directorySize = 0; DirectoryInfo di = ...

  7. mysql的with rollup

    无意间发现了mysql的with rollup函数(用在group by 函数后面) 测试 1. SELECT NAME,DATE,score FROM stu 结果是 2. SELECT NAME, ...

  8. thinkphp中ajax接收参数值

    if(IS_AJAX) { $oldpwd=I('param.oldpwd'); }

  9. flask 继承模版的基本使用1

  10. UNIX/Linux系统管理技术手册(1)----脚本和shell

    1. 管道和重定向 (i) 要让第二条命令只有在第一条命令成功完成之后才执行,可以用一个 && 符号把两条命令隔开.例如: $ > /dev/null && cd ...