智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3627|回复: 15
打印 上一主题 下一主题

[讨论] 这个真心难——头文件中变量问题(先给大神跪了)

[复制链接]

9

主题

61

帖子

0

精华

高级会员

Rank: 4

积分
923
威望
580
贡献
183
兑换币
144
注册时间
2011-12-3
在线时间
80 小时
跳转到指定楼层
1#
发表于 2013-1-27 21:33:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看程序发现别人有自己定义的头文件比如Light.H,我想问一下如果头文件里面定义了变量如:uchar a,*b
1.那么这些变量对主程序中同名变量(如a和指针b)有影响吗?
2.这些变量,尤其是指针变量,对main.c 中的函数(比如说void justgo(void){……})有影响吗?
我看到的这份程序里面发现头文件中如Light.H定义的变量如:uchar a,*b,在main.c中的函数justgo里面右重新定义了,请问这么做是为了什么呢?

9

主题

61

帖子

0

精华

高级会员

Rank: 4

积分
923
威望
580
贡献
183
兑换币
144
注册时间
2011-12-3
在线时间
80 小时
2#
 楼主| 发表于 2013-1-27 21:33:51 | 只看该作者
这帖子绝对不能沉啊
回复 支持 反对

使用道具 举报

9

主题

61

帖子

0

精华

高级会员

Rank: 4

积分
923
威望
580
贡献
183
兑换币
144
注册时间
2011-12-3
在线时间
80 小时
3#
 楼主| 发表于 2013-1-27 21:34:07 | 只看该作者
先顶起啦,大家有什么想法
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
191
威望
131
贡献
46
兑换币
26
注册时间
2012-6-20
在线时间
8 小时
4#
发表于 2013-1-27 22:14:46 | 只看该作者
头文件里不能定义变量呀!!!那只是变量的声明,这是有区别的。如int i;和extern int i;前者是定义,后者是声明。定义和声明的追重要的区别是:定义创建了对象,并为这个对象分配了内存,声明没有分配内存。一个变量或对象在一定的区域内(比如函数内,全局等)只能被定义一次,如果定义多次,编译器会提示你重复定义同一个变量或对象。声明是可以重复的。在此声明并非大神,你还是再看看c语言吧!
回复 支持 反对

使用道具 举报

282

主题

1780

帖子

1

精华

管理员

曾经的智能车人……

Rank: 11Rank: 11Rank: 11Rank: 11

积分
28410

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

QQ
威望
10435
贡献
11681
兑换币
4722
注册时间
2009-9-7
在线时间
3147 小时
5#
发表于 2013-1-27 22:16:55 | 只看该作者
首先要确定你定义的是全局变量还是局部变量 ,在头文件里面定义了全局变量的,引用该头文件的文件即可使用该变量。
回复 支持 反对

使用道具 举报

5

主题

104

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1324
QQ
威望
788
贡献
222
兑换币
194
注册时间
2011-11-19
在线时间
157 小时
6#
发表于 2013-1-27 22:37:58 | 只看该作者
在这个问题上确实比较纠结,不过自己把思维慢慢理清了就好了!
回复 支持 反对

使用道具 举报

1

主题

2067

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5124

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

威望
2752
贡献
898
兑换币
59
注册时间
2012-12-8
在线时间
737 小时
7#
发表于 2013-1-28 00:02:41 | 只看该作者
五楼是正解,只要分清是全局变量还是局部变量就好了。
回复 支持 反对

使用道具 举报

45

主题

761

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5023
威望
2903
贡献
558
兑换币
1271
注册时间
2012-10-16
在线时间
781 小时
8#
发表于 2013-1-28 04:30:50 | 只看该作者
回复 支持 反对

使用道具 举报

9

主题

61

帖子

0

精华

高级会员

Rank: 4

积分
923
威望
580
贡献
183
兑换币
144
注册时间
2011-12-3
在线时间
80 小时
9#
 楼主| 发表于 2013-1-28 09:44:21 | 只看该作者
凌心 发表于 2013-1-27 22:16
首先要确定你定义的是全局变量还是局部变量 ,在头文件里面定义了全局变量的,引用该头文件的文件即可使用该 ...

四楼说头文件不能变量,你说全局变量可以,我有点不明白了
回复 支持 反对

使用道具 举报

11

主题

290

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3405
威望
1240
贡献
731
兑换币
334
注册时间
2012-4-9
在线时间
717 小时
10#
发表于 2013-1-28 11:47:30 | 只看该作者
ssrs 发表于 2013-1-27 22:14
头文件里不能定义变量呀!!!那只是变量的声明,这是有区别的。如int i;和extern int i;前者是定义,后者 ...

声明的时候不需要加int吧 貌似 我之前用extern int编译器提示重复定义
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-2 07:51 , Processed in 0.112622 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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