智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 6078|回复: 23
打印 上一主题 下一主题

【图】声明定义【外部】结构体,格式是什么- -。

  [复制链接]

165

主题

4119

帖子

2

精华

杰出人士

老司机【呆萌侠】

Rank: 12Rank: 12Rank: 12

积分
16895

活跃会员奖章优秀会员奖章推广达人奖章热心会员奖章论坛元老奖章论坛骨干奖章在线王奖章资源大师奖章

QQ
威望
9751
贡献
4562
兑换币
1629
注册时间
2011-7-23
在线时间
1291 小时
毕业学校
工大
跳转到指定楼层
1#
发表于 2014-5-11 11:44:12 | 只看该作者 回帖奖励 |正序浏览 |阅读模式


一个自己的.C对应一个.H 两个文件。
普通的全局变量
在.C里定义 在.H里面 申明加个extern就能在别的.C里面调用了。但是现在想对结构体做同样的处理,不知道具体格式,尝试各种放法总是提示错误= =求大神解答一下 如何 声明定义全局的结构体变量?

我的.C里定义的结构体



我的.H里声明的结构体变量



但是 总是提示.C里面 定义 那里的一个错误:


= =。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

14

主题

89

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1199
威望
602
贡献
347
兑换币
370
注册时间
2014-12-27
在线时间
125 小时
24#
发表于 2015-4-5 17:28:42 | 只看该作者
allenanswerzq 发表于 2014-5-11 11:56
typedef struct PID      
{
        float vi_Set;            //速度 PID,速度设定值   

可以问问你 写好的结构体如何掉出来她的动态数据在主函数main中看到呢?
回复 支持 反对

使用道具 举报

6

主题

1037

帖子

1

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
9108

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

威望
4514
贡献
2400
兑换币
2952
注册时间
2014-7-18
在线时间
1097 小时
毕业学校
合肥工业大学
23#
发表于 2015-1-7 16:07:29 | 只看该作者
allenanswerzq 发表于 2014-5-11 11:56
typedef struct PID      
{
        float vi_Set;            //速度 PID,速度设定值   

求教我的还是不行啊提示这个
redefinition;  symbol cannot be overloaded with a typedef

说是typedef不能重载什么的?
回复 支持 反对

使用道具 举报

3

主题

110

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1589
威望
786
贡献
459
兑换币
508
注册时间
2014-3-10
在线时间
172 小时
22#
发表于 2014-11-1 13:12:35 | 只看该作者
回复 支持 反对

使用道具 举报

165

主题

4119

帖子

2

精华

杰出人士

老司机【呆萌侠】

Rank: 12Rank: 12Rank: 12

积分
16895

活跃会员奖章优秀会员奖章推广达人奖章热心会员奖章论坛元老奖章论坛骨干奖章在线王奖章资源大师奖章

QQ
威望
9751
贡献
4562
兑换币
1629
注册时间
2011-7-23
在线时间
1291 小时
毕业学校
工大
21#
 楼主| 发表于 2014-5-11 16:51:54 | 只看该作者
wen123 发表于 2014-5-11 14:54
有区别啊,
看两个例子你就明白了:
1:a:# define INT32 int

3Q。谢了。
回复 支持 反对

使用道具 举报

34

主题

1589

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6271

论坛元老奖章优秀会员奖章活跃会员奖章在线王奖章

威望
3267
贡献
1194
兑换币
2035
注册时间
2012-11-28
在线时间
905 小时
20#
发表于 2014-5-11 14:54:27 | 只看该作者
恋May 发表于 2014-5-11 14:32
但是和宏定义的区别是什么 网上说和宏定义 有区别 但是感觉差不多- -

有区别啊,
看两个例子你就明白了:
1:a:# define INT32 int
unsigned INT32 i=10;
    b:typedef int INT32 ;
   unsigned INT32 i=10;
你会发现a不会出错,,而b会出错,,原因typedef定义的变量不支持这种类型拓展!!
2:
a:# define Pchar char *
    Pchar p1,p2;
b:typedef Pchar char *;
    Pchar p1,p2
你会发现b的p1和p2全是字符指针
而a只有p1是而p2是char型非指针

通过两个例子可以看出,,宏定义会在预编译的时候把你定义的形式给“替换”掉,而typedef定义的是一条语句(看分号就知道)不是简单的替换,,在一些底层之类的你都会发现大部分用的是typedef而不是define,


回复 支持 反对

使用道具 举报

165

主题

4119

帖子

2

精华

杰出人士

老司机【呆萌侠】

Rank: 12Rank: 12Rank: 12

积分
16895

活跃会员奖章优秀会员奖章推广达人奖章热心会员奖章论坛元老奖章论坛骨干奖章在线王奖章资源大师奖章

QQ
威望
9751
贡献
4562
兑换币
1629
注册时间
2011-7-23
在线时间
1291 小时
毕业学校
工大
19#
 楼主| 发表于 2014-5-11 14:32:10 | 只看该作者
wen123 发表于 2014-5-11 14:02
这个也算是宏定义

但是和宏定义的区别是什么 网上说和宏定义 有区别 但是感觉差不多- -
回复 支持 反对

使用道具 举报

34

主题

1589

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6271

论坛元老奖章优秀会员奖章活跃会员奖章在线王奖章

威望
3267
贡献
1194
兑换币
2035
注册时间
2012-11-28
在线时间
905 小时
18#
发表于 2014-5-11 14:02:50 | 只看该作者
恋May 发表于 2014-5-11 12:53
谢谢,按照你说的解决了! 原来结构体需要用typedef 才可以外部使用= =没变量那么简单么。

这个也算是宏定义
回复 支持 反对

使用道具 举报

137

主题

4169

帖子

1

精华

杰出人士

我认为最省轮子的跑法最快。曾经的西科4队

Rank: 12Rank: 12Rank: 12

积分
14006
QQ
威望
6233
贡献
1229
兑换币
4171
注册时间
2013-1-10
在线时间
3272 小时
17#
发表于 2014-5-11 13:59:14 | 只看该作者
恋May 发表于 2014-5-11 13:34
sPID  就如: int  a;的a一样 是个变量 只是数据类型是PID

后面 调用的时候 用sPID.p  这样的。

噢噢~~~thanks~~~明白了~~~
回复 支持 反对

使用道具 举报

165

主题

4119

帖子

2

精华

杰出人士

老司机【呆萌侠】

Rank: 12Rank: 12Rank: 12

积分
16895

活跃会员奖章优秀会员奖章推广达人奖章热心会员奖章论坛元老奖章论坛骨干奖章在线王奖章资源大师奖章

QQ
威望
9751
贡献
4562
兑换币
1629
注册时间
2011-7-23
在线时间
1291 小时
毕业学校
工大
16#
 楼主| 发表于 2014-5-11 13:34:39 | 只看该作者
Jyoun 发表于 2014-5-11 13:06
还是不明白那个sPID……⊙▽⊙

sPID  就如: int  a;的a一样 是个变量 只是数据类型是PID

后面 调用的时候 用sPID.p  这样的。
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-28 13:51 , Processed in 0.058523 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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