OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8224|回复: 3

求教原子哥啊,不定数量的结构体数组怎么初始化话,我循环赋值总是报错

[复制链接]

9

主题

83

帖子

0

精华

高级会员

Rank: 4

积分
647
金钱
647
注册时间
2013-3-28
在线时间
64 小时
发表于 2013-8-27 18:04:15 | 显示全部楼层 |阅读模式
typedef struct
{
u8 L_Fault;
u8 R_Fault;
u8 M_Fault;
u8 C_Fault;
u8 B_Fault;
u8 P_Fault;
}LAMP_InitStateDef;

void Lamp_Init(u8 lamp_num)
{
u8 tmp_num;
LAMP_InitStateDef LAMP_InitStructure[lamp_num];
for(tmp_num=1;tmp_num<=lamp_num;tmp_num++)
{
LAMP_InitStructure[tmp_num].L_Fault=0;
LAMP_InitStructure[tmp_num].R_Fault=0;
LAMP_InitStructure[tmp_num].M_Fault=0;
LAMP_InitStructure[tmp_num].C_Fault=0;
LAMP_InitStructure[tmp_num].B_Fault=0;
LAMP_InitStructure[tmp_num].P_Fault=0;

}
}

报错如下:说是“LAMP_InitStateDef LAMP_InitStructure[lamp_num];“这行非得是确定的数字才行
..\HARDWARE\DEVICE\device.c(6): error:  #28: expression must have a constant value



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

83

帖子

0

精华

高级会员

Rank: 4

积分
647
金钱
647
注册时间
2013-3-28
在线时间
64 小时
 楼主| 发表于 2013-8-27 18:07:46 | 显示全部楼层
上面是个函数 我在主函数里面调用 也出错
int main(void)
{
u8 send_count=0;
u8 tmp_i;
delay_init();      //延时初始化   
NVIC_Configuration();//设置NVIC中断分组2:2位抢占优先级,2位响应优先级
LED_Init();     //初始化与LED连接的硬件接口
TIM2_Int_Init(5999,7199);//600ms定时
RS485_Init(9600);
Lamp_Init(8);
while(1)
{
num2str(lamp_id,lamp_id_str,5,read_head);
if(send_flag)
{
send_flag=0;
RS485_Send_Data(lamp_id_str,5);
RS485_Send_Data(query,9);
send_count++;
}
if(send_count>3)
{
LAMP_InitStructure[lamp_id].C_Fault=1;
lamp_id++;
send_count=0;
}

说是我”LAMP_InitStructure[lamp_id].C_Fault=1;“这行的LAMP_InitStructure 没定义
main.c(69): error:  #20: identifier "LAMP_InitStructure" is undefined

有人能帮忙 看我是哪里错了吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-27 18:11:10 | 显示全部楼层
回复【楼主位】zkevin8879:
---------------------------------
C语言基础,得好好巩固下。
别说结构体数组了,就算你定义一个u8 t[lamp_num];
编译器也会报错啊
原因很简单啊,他不知道你的lamp_num是多大,lamp_num是个变量,不确定的,编译器没法给你分配内存,所以没法编译....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

83

帖子

0

精华

高级会员

Rank: 4

积分
647
金钱
647
注册时间
2013-3-28
在线时间
64 小时
 楼主| 发表于 2013-8-28 14:03:33 | 显示全部楼层
回复【3楼】正点原子:

回复【楼主位】zkevin8879:
---------------------------------
C语言基础,得好好巩固下。
别说结构体数组了,就算你定义一个u8 t[lamp_num];
编译器也会报错啊
原因很简单啊,他不知道你的lamp_num是多大,lamp_num是个变量,不确定的,编译器没法给你分配内存,所以没法编译....

---------------------------------
小的知道错了,昨晚回去之后我已经意识到这个错误了,谢谢大哥您的指正!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-14 06:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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