找回密码
 立即注册
查看: 618|回复: 6

太神奇了,数组定义居然必须放在main函数的最开始否则报错

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:143
  • 最近打卡:2025-04-29 09:29:30

31

主题

148

回帖

982

积分

高级会员

积分
982
发表于 2024-1-23 21:05:59 | 显示全部楼层 |阅读模式
本帖最后由 yzhkpli 于 2024-1-23 23:49 编辑

rt!
布丁橘长的数组式流水灯程序

我的代码如果写成
  1. void main()
  2. {
  3. u8 led_Code[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
  4. u8 i=0;
  5.         
  6.         WTST=0;//设置等待时间为0个时钟,cpu速度最快
  7.         P2M1=0x00;
  8.         P2M0=0x00;//设置为准双向口模式
  9. //如果放到这里必然报错
复制代码


就不报错。如果把数组定义写到设置准双向口的后面,则立刻报错。

一开始还没发现是这个错误,后来下载了布丁橘长大佬的代码才注意到是这个问题。

附件为报错的代码

main.c

856 Bytes, 下载次数: 26

回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:328
  • 最近打卡:2025-03-09 19:40:01

9

主题

328

回帖

4501

积分

荣誉版主

积分
4501
发表于 2024-1-23 23:05:00 | 显示全部楼层
是的,Keil的C标准比较老,只能在开头定义变量
也有一个作弊的方法是在需要定义变量的地方先打一个大括号再定义,在函数末尾括回,但是我不推荐任何人这样做,降低了可读性
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:449
  • 最近打卡:2025-04-30 10:57:37

17

主题

533

回帖

1326

积分

金牌会员

积分
1326
发表于 2024-1-24 08:12:07 | 显示全部楼层
是的,楼上正解,定义变量必须放到方法体的最上面.
自信就会温和,温和就会坚定!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:513
  • 最近打卡:2025-05-02 07:32:37

21

主题

564

回帖

2678

积分

金牌会员

积分
2678
发表于 2024-1-24 08:17:48 | 显示全部楼层
哈哈哈,这个问题我遇到过,愣了一会儿才明白
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:424
  • 最近打卡:2025-05-02 14:37:11
已绑定手机

77

主题

4849

回帖

8382

积分

超级版主

DebugLab

积分
8382
发表于 2024-1-24 09:09:02 | 显示全部楼层
不支持C99,C99才有这个功能
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-05-02 08:06:55
已绑定手机

1

主题

834

回帖

1447

积分

金牌会员

积分
1447
发表于 2024-1-24 09:12:23 | 显示全部楼层
这个必须放到开头进行定义,你就参照布丁橘长的来呗
靡不有初,鲜克有终
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:414
  • 最近打卡:2025-05-02 09:17:58

5

主题

296

回帖

2034

积分

金牌会员

积分
2034
发表于 2024-1-24 11:07:29 | 显示全部楼层
是的,以前我也出过这个错误
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 20:43 , Processed in 0.160678 second(s), 93 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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