找回密码
 立即注册
查看: 737|回复: 26

结贴--感谢各位网友解答---关于变量声明的问题

[复制链接]
  • TA的每日心情
    奋斗
    昨天 22:13
  • 签到天数: 72 天

    [LV.6]常住居民II

    9

    主题

    76

    回帖

    305

    积分

    中级会员

    积分
    305
    发表于 2024-1-25 17:20:11 | 显示全部楼层 |阅读模式
    本帖最后由 JimOrange 于 2024-1-26 12:14 编辑

    事情回顾:按照现代编程语言编写代码,发现在mian函数调用过其它函数(如:fun)后再定义其它变量一律报错。
    解决方案:只要保证在函数(如:fun)调用前定义/声明变量就可以了。(只对同一“生命周期”有效,比如在while里面定义变量不会影响到fun函数的编译)
    本人鄙见,可能不太严谨,如有疏漏,望大伙见谅!

    =======================历史记录===============



    创建一个函数,然后调用这个函数。之后再定义变量就报错,各种修改都不行,实在莫名其妙!!! 大伙儿有遇到过吗?

    注释了就编译通过

    注释了就编译通过

    没有调用函数就编译通过,

    编译失败

    编译失败



    ===============更新====================
    原以为不能在main函数定义变量,只能在main函数之前,结果看了@冲哥视频,他的怎么就可以定义变量在main函数呢?(注意看他之前是有函数声明的)


    不为别的,只为知道个所以然。
    截屏2024-01-26 07.06.11.png
















    Main.c

    99 Bytes, 下载次数: 7

    回复 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    7 小时前
  • 签到天数: 156 天

    [LV.7]常住居民III

    20

    主题

    1191

    回帖

    2871

    积分

    金牌会员

    积分
    2871
    发表于 2024-1-25 17:22:49 | 显示全部楼层
    C51 支持的C语言版本不支持 这样使用。
    变量必须定义在函数开头
    参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
    技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 161 天

    [LV.7]常住居民III

    39

    主题

    906

    回帖

    4334

    积分

    荣誉版主

    积分
    4334
    发表于 2024-1-25 17:28:22 | 显示全部楼层
    前面一个 子函数 fun() { ; } 内要加 ;

    后来一个 主函数 main() 没有返回值; 用 void main()  试试 .
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    7 小时前
  • 签到天数: 125 天

    [LV.7]常住居民III

    10

    主题

    611

    回帖

    1044

    积分

    金牌会员

    积分
    1044
    发表于 2024-1-25 17:31:06 | 显示全部楼层
    main中一般是要包含while(1)的
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    7 小时前
  • 签到天数: 156 天

    [LV.7]常住居民III

    20

    主题

    1191

    回帖

    2871

    积分

    金牌会员

    积分
    2871
    发表于 2024-1-25 17:49:31 | 显示全部楼层
    LAOXU 发表于 2024-1-25 17:28
    前面一个 子函数 fun() { ; } 内要加 ;

    后来一个 主函数 main() 没有返回值; 用 void main()  试试 . ...

    话说楼主这个不是 语法问题么,,C251里支持C99语法了么?
    参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
    技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 22:13
  • 签到天数: 72 天

    [LV.6]常住居民II

    9

    主题

    76

    回帖

    305

    积分

    中级会员

    积分
    305
     楼主| 发表于 2024-1-25 17:59:57 | 显示全部楼层
    LAOXU 发表于 2024-1-25 17:28
    前面一个 子函数 fun() { ; } 内要加 ;

    后来一个 主函数 main() 没有返回值; 用 void main()  试试 . ...

    截屏2024-01-25 17.58.51.png
    一样的~

    点评

    没有 int , 哪来的 "int" 错误 ??? 估计文件内存, 有地方冲突变化了. 以前我也碰到过, 只有重建工程, 重建文件.  详情 回复 发表于 2024-1-25 19:24
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 22:13
  • 签到天数: 72 天

    [LV.6]常住居民II

    9

    主题

    76

    回帖

    305

    积分

    中级会员

    积分
    305
     楼主| 发表于 2024-1-25 18:00:25 | 显示全部楼层
    _奶咖君_ 发表于 2024-1-25 17:49
    话说楼主这个不是 语法问题么,,C251里支持C99语法了么?

    ???这不是最简单的C吗?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 22:13
  • 签到天数: 72 天

    [LV.6]常住居民II

    9

    主题

    76

    回帖

    305

    积分

    中级会员

    积分
    305
     楼主| 发表于 2024-1-25 18:09:20 | 显示全部楼层
    _奶咖君_ 发表于 2024-1-25 17:22
    C51 支持的C语言版本不支持 这样使用。
    变量必须定义在函数开头

    谢谢~ 有没有具体一点, 截屏2024-01-25 18.07.33.png

    我定义在函数里面也可以,是不是只要定义了全局函数,以后所有的变量都只能在全局定义?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 180 天

    [LV.7]常住居民III

    43

    主题

    369

    回帖

    1151

    积分

    金牌会员

    静坐常思己过,闲谈莫论人非

    积分
    1151
    发表于 2024-1-25 18:44:33 | 显示全部楼层
    我也遇到过,变量定义必须定义在一个函数的开头,不能放在调用、赋值等语句后,c语言标准的问题,它这样规定,keil就这样进行检测,不符合就编译不通过
    处事要代人所想,读书需切己用功
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情

    12 小时前
  • 签到天数: 172 天

    [LV.7]常住居民III

    10

    主题

    309

    回帖

    1146

    积分

    金牌会员

    积分
    1146
    发表于 2024-1-25 19:08:27 | 显示全部楼层
    你第一个截图的警告是因为你定义了一个方法 但是你没有调用。 这个可以忽略

    你第二个的问题是,定义的variable 没有放到函数体的开头。 希望可以帮到你谢谢!
    自信就会温和,温和就会坚定!
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-6-3 15:47 , Processed in 0.074405 second(s), 72 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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