找回密码
 立即注册
查看: 533|回复: 4

C51 局部变量定义在函数的位置

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:500
  • 最近打卡:2025-06-19 08:42:07

3

主题

114

回帖

1093

积分

金牌会员

积分
1093
发表于 2024-3-3 20:24:58 | 显示全部楼层 |阅读模式
    switch(menl){
          unsigned char a;   
                                case 2:
                                        LCD_write_string(0, 0, "P0: 152 784  50%", 16);
                                        LCD_write_string(0, 1, "P1: 152 784  50%", 16);
                                        a++;
                                        break;
                                case 3:
                                        LCD_write_string(5, 0, "P2=TIME", 7);
                                        LCD_write_string(7, 1, "(YES)", 5);                               
                                        break;
  }
如上的程序片段,变量 unsigned char a放在 switch(menl){大括号下,编译器没有报错,这样可以?有风险?谢谢

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-06-19 08:18:37
已绑定手机

14

主题

1312

回帖

3360

积分

论坛元老

积分
3360
发表于 2024-3-3 21:46:15 | 显示全部楼层
记得Keil C51/251默认支持C89规范,如果想变量定义不在函数开头,需要添加C99规范的支持才行
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-06-19 08:18:37
已绑定手机

14

主题

1312

回帖

3360

积分

论坛元老

积分
3360
发表于 2024-3-3 21:48:41 | 显示全部楼层
另外,Keil ARM是支持C99的。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2025-05-28 09:08:49

34

主题

1094

回帖

2454

积分

荣誉版主

积分
2454
发表于 2024-3-3 22:44:03 | 显示全部楼层
本帖最后由 tzz1983 于 2024-3-4 09:18 编辑

没有风险, 只能大括号内能访问

规则就是定义变量紧跟大括号就可以.  
大括号被解释为复合语句, 复合语句和函数一样, 是可以定义自己的变量的.

比如:
{
    int a=0;
    ....
}

if(1)
{
int a=0;
....
}
这样都是可以的
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:500
  • 最近打卡:2025-06-19 08:42:07

3

主题

114

回帖

1093

积分

金牌会员

积分
1093
发表于 2024-3-4 08:54:19 | 显示全部楼层
tzz1*** 发表于 2024-3-3 22:44
没有风险, 只能大括号内能访问

规则就是定义变量紧跟大括号就可以.  

好的,谢谢!
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-19 16:45 , Processed in 0.156348 second(s), 73 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表