OpenEdv-开源电子网

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

请求一些结构体的声明问题

[复制链接]

8

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2018-7-22
在线时间
14 小时
发表于 2018-8-21 07:34:06 | 显示全部楼层 |阅读模式
1金钱
定义结构体
struct GPS_Time
{
        bool flag;
        u16  year;
        u16  month;
  u16  day;       
        u8   hour;
        u8   min;
        u8   sec;
        float x;
        float y;
};

在其它.h文件里这样声明怎么错了
extern struct GPS_Time;

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

使用道具 举报

10

主题

67

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2018-6-30
在线时间
42 小时
发表于 2018-8-21 07:44:10 | 显示全部楼层
是不是应该这样
extern struct GPS_Time   GPSTime;
回复

使用道具 举报

8

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2018-7-22
在线时间
14 小时
 楼主| 发表于 2018-8-21 08:00:52 | 显示全部楼层
shiyikuangxia 发表于 2018-8-21 07:44
是不是应该这样
extern struct GPS_Time   GPSTime;

为什么要这么写?写的时候写错成GPSYime也没报错
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2018-8-21 08:15:50 | 显示全部楼层
extern 用于声明外部变量,不是类型。你这个:

extern struct GPS_Time;

都是对类型的外部声明,编译器没找到变量名就懵逼了。而且一般咱们把类型的定义写在头文件中,不太建议放到C文件中,引用会方便很多。

十六进制带我飞。
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-21 08:16:42 | 显示全部楼层
yininin 发表于 2018-8-21 08:00
为什么要这么写?写的时候写错成GPSYime也没报错

你没写个体啊.........
extern struct GPS_Time  个体名称;
建议百度一下结构体定义........
你定义了结构体,就要用相应的个体来使用它,2楼定义了GPSTime,我这里随便定义一个time
extern struct GPS_Time   time;
然后time就拥有了GPS_Time这个结构体的结构,即,time中有它自己的year month day...
猪猪熊呢?
回复

使用道具 举报

10

主题

81

帖子

0

精华

初级会员

Rank: 2

积分
149
金钱
149
注册时间
2018-5-8
在线时间
27 小时
发表于 2018-9-11 17:00:10 | 显示全部楼层
定义放c里面
回复

使用道具 举报

9

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
251
金钱
251
注册时间
2018-4-6
在线时间
31 小时
发表于 2018-9-12 06:57:50 | 显示全部楼层
首先,你需要在自定义。c里面定义结构体struct GPS_Time;
然后,如果你需要在别的。c里面用到的话就需要在别的。c里申明一下,这是外部的变量
struct GPS_Time;
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
发表于 2018-9-12 11:54:31 | 显示全部楼层
struct GPS_Time只是一个类型名,就像int,char一样,你需要加上变量的名字
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-9-12 13:51:36 | 显示全部楼层
这种写法自定义自用是可以的, 但要是想给别的C文件调用是不行的, 用typedef的方法定义,才能被另外的C文件调用
回复

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
发表于 2018-9-13 08:51:24 | 显示全部楼层
这个应该看看C方面的书了,不妨多翻C基础书。
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
发表于 2018-9-13 09:10:07 | 显示全部楼层
4楼正解。你extern的只是变量类型,没有变量名。好好看一下结构体的知识
回复

使用道具 举报

35

主题

560

帖子

2

精华

资深版主

Rank: 8Rank: 8

积分
17784
金钱
17784
注册时间
2018-3-3
在线时间
523 小时
发表于 2018-9-13 11:49:56 | 显示全部楼层
没有实例化对象啊
/*
*
*
*
*
*
*/
回复

使用道具 举报

21

主题

122

帖子

0

精华

高级会员

Rank: 4

积分
545
金钱
545
注册时间
2018-6-6
在线时间
96 小时
发表于 2018-9-15 22:30:18 | 显示全部楼层
相当于写了struct int;  把变量名加上就好了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 08:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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