OpenEdv-开源电子网

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

程序编译的时候老是报错,不知道怎么改,请大家帮忙看看哈

[复制链接]

19

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2011-9-19
在线时间
8 小时
发表于 2011-10-18 15:04:07 | 显示全部楼层 |阅读模式
我定义了这样一个结构体全局变量
struct MyStructure{
 u8 Data_SetADD_HEX[9]; 
 u8 Data_ReadADD_HEX[9]; 
 u8 Data_SetRangeVLD_HEX[12]; 
 u8 Data_ReadRangeVLD_HEX[12]; 
 u8 Data_ReadPitchRoll_HEX[16];
 u8 Data_ReadVLD_HEX[12];
 u8 Data_ReadVolTemp_HEX[16]; 
}Message;
然后在主函数中对它们进行初始化赋值
 Message.Data_SetADD_HEX[9] = {0xAA,0xAA,0x06,0,0,0,0,0}; 
 Message.Data_ReadADD_HEX[9] = {0xAA,0xAA,0x06,0,0,0,0,0}; 
 Message.Data_SetRangeVLD_HEX[12] = {0xAA,0xAA,0x09,0,0,0,0,0,0,0,0}; 
 Message.Data_ReadRangeVLD_HEX[12] = {0xAA,0xAA,0x09,0,0,0,0,0,0,0,0}; 
 Message.Data_ReadPitchRoll_HEX[16] = {0xAA,0xAA,0x0D,0,0,0,0,0,0,0,0,0,0,0,0}; 
 Message.Data_ReadVLD_HEX[12] = {0xAA,0xAA,0x09,0,0,0,0,0,0,0,0}; 
 Message.Data_ReadVolTemp_HEX[16] = {0xAA,0xAA,0x0D,0,0,0,0,0,0,0,0,0,0,0,0,0}; 
但是编译的时候为什么老是报错:
source\mian.c(12): error:  #29: expected an expression
source\mian.c(12): warning:  #175-D: subscript out of range
source\mian.c(13): error:  #29: expected an expression
source\mian.c(13): warning:  #175-D: subscript out of range
source\mian.c(14): error:  #29: expected an expression
source\mian.c(14): warning:  #175-D: subscript out of range
source\mian.c(15): error:  #29: expected an expression
source\mian.c(15): warning:  #175-D: subscript out of range
source\mian.c(16): error:  #29: expected an expression
source\mian.c(16): warning:  #175-D: subscript out of range
source\mian.c(17): error:  #29: expected an expression
source\mian.c(17): warning:  #175-D: subscript out of range
source\mian.c(18): error:  #29: expected an expression
source\mian.c(18): warning:  #175-D: subscript out of range
不知道该怎么改,想请大家帮忙看看。

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-10-18 15:39:58 | 显示全部楼层
回复【楼主位】baiydcwy:
---------------------------------
删掉还报错么?
一步步来吧.一次写这么多也不验证一下.
先写一个看报错不报错.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

19

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2011-9-19
在线时间
8 小时
 楼主| 发表于 2011-10-18 15:44:56 | 显示全部楼层
我把它注释掉后就不报错了,但是在使用的地方显示没有定义。
回复 支持 反对

使用道具 举报

19

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2011-9-19
在线时间
8 小时
 楼主| 发表于 2011-10-18 15:59:29 | 显示全部楼层
我把结构体成员只搞一个,把所有调用这个成员的地方都注释掉了,还是报同样的错误。
回复 支持 反对

使用道具 举报

19

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2011-9-19
在线时间
8 小时
 楼主| 发表于 2011-10-18 16:30:09 | 显示全部楼层
我刚刚新建了一个工程,就把上面的那个结构体复制到工程里面,然后程序进入while死循环,但是编译的时候程序还是报同样的错误
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-10-18 23:42:04 | 显示全部楼层
Message.Data_SetADD_HEX[9] = {0xAA,0xAA,0x06,0,0,0,0,0}; 
前面是9个信息,你这里只给赋值8个,我不知道是不是这里的问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

19

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2011-9-19
在线时间
8 小时
 楼主| 发表于 2011-10-19 08:35:55 | 显示全部楼层

我最开始就是8个,然后我看到错误信息里面说好像是什么数组越界,我查看了一下字符数组中还有一个'\0'的结束符,在标准C中,定义数组的时候好像是要多一个,但是我改了之后仍然出错,而且报错原因是一样的,后来我又改到了20,仍然不行,还是报同样的错,搞不明白,唉。。。。。。
我刚刚新建了一个工程,就把上面的那个结构体复制到工程里面,在main函数前进行定义,在main函数中进行初始化赋值,然后程序进入while死循环,但是编译的时候程序还是报同样的错误
这个是我新建的工程:这个程序再简单不过了,但是还是报同样的错。
#include <stm32f10x_lib.h>
struct MyStructure{
 u8 Data_SetADD_HEX[20]; 
 u8 Data_ReadADD_HEX[20]; 
 u8 Data_SetRangeVLD_HEX[20]; 
 u8 Data_ReadRangeVLD_HEX[20]; 
 u8 Data_ReadPitchRoll_HEX[20]; 
 u8 Data_ReadVLD_HEX[20]; 
 u8 Data_ReadVolTemp_HEX[20]; 
}Message;

int main(void)
{
 Message.Data_SetADD_HEX[20] = {0xAA,0xAA,0x06,0,0,0,0,0}; 
 Message.Data_ReadADD_HEX[20] = {0xAA,0xAA,0x06,0,0,0,0,0}; 
 Message.Data_SetRangeVLD_HEX[20] = {0xAA,0xAA,0x09,0,0,0,0,0,0,0,0}; 
 Message.Data_ReadRangeVLD_HEX[20] = {0xAA,0xAA,0x09,0,0,0,0,0,0,0,0}; 
 Message.Data_ReadPitchRoll_HEX[20] = {0xAA,0xAA,0x0D,0,0,0,0,0,0,0,0,0,0,0,0};
 Message.Data_ReadVLD_HEX[20] = {0xAA,0xAA,0x09,0,0,0,0,0,0,0,0}; 
 Message.Data_ReadVolTemp_HEX[20] = {0xAA,0xAA,0x0D,0,0,0,0,0,0,0,0,0,0,0,0,0}; 
 while(1)
 {}

回复 支持 反对

使用道具 举报

19

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2011-9-19
在线时间
8 小时
 楼主| 发表于 2011-10-19 10:44:51 | 显示全部楼层
呃,TMD,终于找到原因了,我犯了一个低级错误,我把结构体变量的初始化和一般的数组初始化混到一起了,我们应该是对结构体变量进行初始化,而不是对结构体中的数组进行初始化,而其中的数组是结构体的成员,并不是变量,是不能对它进行直接初始化的,要对其中的成员数组进行初始化,我们须通过对结构体变量进行初始化从而达到对结构体成员进行初始化的效果。
再者,数组、结构体等变量的初始化是在定义的时候进行初始化的,定义完后是不能进行初始化的,定义后再对它进行操作就是进行赋值了,所以在上面的main函数中是不能够进行初始化的。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-10-19 12:35:51 | 显示全部楼层
回复【8楼】baiydcwy:
---------------------------------
呵呵.学习.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

15

主题

204

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2013-7-17
在线时间
0 小时
发表于 2013-8-26 20:59:32 | 显示全部楼层
回复【8楼】baiydcwy:
---------------------------------
如果修改代码应该怎样修改呢?
有生之年,只诉温暖不言殇,花味渐浓,茶味渐醇,倾心相遇,安暖相陪。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-14 15:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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