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

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

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:130
  • 最近打卡:2025-04-22 08:32:33

9

主题

76

回帖

537

积分

高级会员

积分
537
发表于 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, 下载次数: 86

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:437
  • 最近打卡:2025-05-07 13:06:10

33

主题

2355

回帖

4876

积分

论坛元老

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-07 09:24:46
已绑定手机

13

主题

1271

回帖

3023

积分

论坛元老

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:437
  • 最近打卡:2025-05-07 13:06:10

33

主题

2355

回帖

4876

积分

论坛元老

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

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

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:130
  • 最近打卡:2025-04-22 08:32:33

9

主题

76

回帖

537

积分

高级会员

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

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

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

点评

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:130
  • 最近打卡:2025-04-22 08:32:33

9

主题

76

回帖

537

积分

高级会员

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

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:130
  • 最近打卡:2025-04-22 08:32:33

9

主题

76

回帖

537

积分

高级会员

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

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:395
  • 最近打卡:2025-05-07 07:52:03

45

主题

381

回帖

1591

积分

金牌会员

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:450
  • 最近打卡:2025-05-06 04:24:11

17

主题

533

回帖

1330

积分

金牌会员

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

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-8 02:22 , Processed in 0.145345 second(s), 121 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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