接上,就会出问题,DEFINE1.C(2): error C279: 'i': multiple initialization,
如果不定义又会说我没定义,不声明又会说的没声明,我都不知道怎么办了,请大师帮帮忙,我写了#ifndef#define#endif语句的在头文件里
是不是在头文件里写extern某某函数,但是不赋初值,然后在另一个c文件中定义这个函数,那这个c文件需要包涵这个头文件吗,还有我是把所有的声明定义都分别写在头文件和c文件里,那别的c文件要是要用到这些定义是要包涵头文件还是包涵用于定义的c文件呢
追答记住了,变量,是先有定义,再有引用,如果只引用,不定义,这个变量无法使用.
用生活理解,引用,就是借用,比如邻居家借你家的东西用,定义,就是制造,邻居要借用,前提是你家要有才行。
举例来说,你家有个锅,非常好用,众邻居都喜欢,你又非常好,所以把锅放在一个公共环境下,这样,众邻居都可以拿来用。
那个锅,就是一个变量,所有权归你家,你家,就相当于定义了变量的C文件;
你把锅放在公共环境下,那个公共环境,就相当于被众多C文件包含的头文件;
而众邻居,就相当于要使用那个变量,并且包含了那个头文件的其他C文件。
我知道声明定义区别,知道他们之间的关系,你就帮我解决下我问的问题就行了,麻烦你了
我的问题就是题目
DEFINE1.C(2): error C279: 'i': multiple initialization
你的问题是这个吗?
看看提示不就清楚了?
"i" 多方面初始化。
就说,你定义的时候,给i初始化了,用extern 引用的时候,又初始化了。
引用的时候,不可以带初始化,例如,X.c文件里这样定义的变量:
unsigned char a = 100; 定义的时候可以初始化,在头文件或者其它C文件引用的时候,不能初始化,妈extern unsigned char a = 100;这是不可以的,直接引用就行了:extern unsigned char a;
我用extern的时候没有给他赋值啊,extern都是在头文件里的,如果我不在c文件里赋值就不会有这样的错误,但是这样就会出现没有赋值的错误
我都快疯掉了
你保证你的所有的extern 都在头文件?没有在别的C文件里引用?检查一下,要是还解决不了,去看我的百度个人资料,里面有我的联系方式。
追问没有,我全是在头文件声明,然后在c文件里定义,并且在头文件中都加了extern
我回去检查下实在不信就再找你
要不我回去把文件发给你,你帮我看看?你的邮箱
我已经自己解决了,原因是我有个c文件包涵了别的c文件出现重复定义
不过还是非常感谢你写了这么多
加了哦