fjstcmcu 发表于 2024-3-3 20:24:58

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

    switch(menl){
          unsigned char a;   
                                case 2:
                                        LCD_write_string(0, 0, "P0: 152 78450%", 16);
                                        LCD_write_string(0, 1, "P1: 152 78450%", 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){大括号下,编译器没有报错,这样可以?有风险?谢谢

21cnsound 发表于 2024-3-3 21:46:15

记得Keil C51/251默认支持C89规范,如果想变量定义不在函数开头,需要添加C99规范的支持才行

21cnsound 发表于 2024-3-3 21:48:41

另外,Keil ARM是支持C99的。

tzz1983 发表于 2024-3-3 22:44:03

本帖最后由 tzz1983 于 2024-3-4 09:18 编辑

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

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

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

if(1)
{
int a=0;
....
}
这样都是可以的

fjstcmcu 发表于 2024-3-4 08:54:19

tzz1983 发表于 2024-3-3 22:44
没有风险, 只能大括号内能访问

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


好的,谢谢!
页: [1]
查看完整版本: C51 局部变量定义在函数的位置