智能车制作

标题: 这个真心难——头文件中变量问题(先给大神跪了) [打印本页]

作者: xil    时间: 2013-1-27 21:33
标题: 这个真心难——头文件中变量问题(先给大神跪了)
看程序发现别人有自己定义的头文件比如Light.H,我想问一下如果头文件里面定义了变量如:uchar a,*b
1.那么这些变量对主程序中同名变量(如a和指针b)有影响吗?
2.这些变量,尤其是指针变量,对main.c 中的函数(比如说void justgo(void){……})有影响吗?
我看到的这份程序里面发现头文件中如Light.H定义的变量如:uchar a,*b,在main.c中的函数justgo里面右重新定义了,请问这么做是为了什么呢?

作者: xil    时间: 2013-1-27 21:33
这帖子绝对不能沉啊
作者: xil    时间: 2013-1-27 21:34
先顶起啦,大家有什么想法
作者: ssrs    时间: 2013-1-27 22:14
头文件里不能定义变量呀!!!那只是变量的声明,这是有区别的。如int i;和extern int i;前者是定义,后者是声明。定义和声明的追重要的区别是:定义创建了对象,并为这个对象分配了内存,声明没有分配内存。一个变量或对象在一定的区域内(比如函数内,全局等)只能被定义一次,如果定义多次,编译器会提示你重复定义同一个变量或对象。声明是可以重复的。在此声明并非大神,你还是再看看c语言吧!
作者: 凌心    时间: 2013-1-27 22:16
首先要确定你定义的是全局变量还是局部变量 ,在头文件里面定义了全局变量的,引用该头文件的文件即可使用该变量。
作者: 司马不在    时间: 2013-1-27 22:37
在这个问题上确实比较纠结,不过自己把思维慢慢理清了就好了!
作者: exiao    时间: 2013-1-28 00:02
五楼是正解,只要分清是全局变量还是局部变量就好了。
作者: I'M_Not_The    时间: 2013-1-28 04:30

作者: xil    时间: 2013-1-28 09:44
凌心 发表于 2013-1-27 22:16
首先要确定你定义的是全局变量还是局部变量 ,在头文件里面定义了全局变量的,引用该头文件的文件即可使用该 ...

四楼说头文件不能变量,你说全局变量可以,我有点不明白了

作者: happyxieqiang    时间: 2013-1-28 11:47
ssrs 发表于 2013-1-27 22:14
头文件里不能定义变量呀!!!那只是变量的声明,这是有区别的。如int i;和extern int i;前者是定义,后者 ...

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

作者: happyxieqiang    时间: 2013-1-28 11:59
如果是局部变量 对main.c没影响 如果是全局变量对main.c有影响 但是你也可以加static声明成外部变量 这样就对main.c没影响了
作者: happyxieqiang    时间: 2013-1-28 12:00
ssrs 发表于 2013-1-27 22:14
头文件里不能定义变量呀!!!那只是变量的声明,这是有区别的。如int i;和extern int i;前者是定义,后者 ...

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

作者: sunzhaoxing2012    时间: 2013-1-28 12:33
首先,你纠结的问题属于结构化编程,你在网上搜一下,有这方面的视频,全局变量有声明和定义,在h文件中的是声明,前置extern,在c文件中的是定义。
作者: xil    时间: 2013-1-28 13:18
sunzhaoxing2012 发表于 2013-1-28 12:33
首先,你纠结的问题属于结构化编程,你在网上搜一下,有这方面的视频,全局变量有声明和定义,在h文件中的是 ...

谢谢
作者: ssrs    时间: 2013-1-28 19:35
happyxieqiang 发表于 2013-1-28 12:00
声明的时候不需要加int吧 貌似 我之前用extern int编译器提示重复定义

声明外部变量时可以把变量类型去掉,应该是你编译器的问题吧,就像有的vc编译器不能通过void main()而只能通过int main()然后return 0的编译
作者: 嘸敵,尒骉垯    时间: 2013-5-13 21:16
凌心 发表于 2013-1-27 22:16
首先要确定你定义的是全局变量还是局部变量 ,在头文件里面定义了全局变量的,引用该头文件的文件即可使用该 ...

学长,为什么我的引用了文件,却不能用其中的全局变量啊。真心不知道为什么了。有没有可能是我的软件有问题啊。




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2