yzhkpli 发表于 2024-1-23 21:05:59

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

本帖最后由 yzhkpli 于 2024-1-23 23:49 编辑

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

我的代码如果写成
void main()
{


u8 led_Code[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
u8 i=0;
      
      WTST=0;//设置等待时间为0个时钟,cpu速度最快

      P2M1=0x00;
      P2M0=0x00;//设置为准双向口模式
//如果放到这里必然报错

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

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

附件为报错的代码

kksk 发表于 2024-1-23 23:05:00

是的,Keil的C标准比较老,只能在开头定义变量
也有一个作弊的方法是在需要定义变量的地方先打一个大括号再定义,在函数末尾括回,但是我不推荐任何人这样做,降低了可读性

嵌入式之路 发表于 2024-1-24 08:12:07

是的,楼上正解,定义变量必须放到方法体的最上面.

wangxiangtan 发表于 2024-1-24 08:17:48

哈哈哈,这个问题我遇到过,愣了一会儿才明白{:4_187:}

DebugLab 发表于 2024-1-24 09:09:02

不支持C99,C99才有这个功能

小涵子爸爸 发表于 2024-1-24 09:12:23

这个必须放到开头进行定义,你就参照布丁橘长的来呗

lzl1okOK 发表于 2024-1-24 11:07:29

是的,以前我也出过这个错误
页: [1]
查看完整版本: 太神奇了,数组定义居然必须放在main函数的最开始否则报错