我要在keil中头文件声明和C文件定义头文件中的变量,可是我在头文件中声明后再到C文件中定义的时候

接上,就会出问题,DEFINE1.C(2):errorC279:'i':multipleinitialization,如果不定义又会说我没定义,不声明又会说的没声明,我都... 接上,就会出问题,DEFINE1.C(2): error C279: 'i': multiple initialization,
如果不定义又会说我没定义,不声明又会说的没声明,我都不知道怎么办了,请大师帮帮忙,我写了#ifndef#define#endif语句的在头文件里
展开
 我来答
wolf_lhy
推荐于2017-09-27 · TA获得超过6609个赞
知道大有可为答主
回答量:1090
采纳率:66%
帮助的人:554万
展开全部
是这样的,通常,变量的定义是放在C文件里,而不是头文件里,C文件定义,头文件引用。
比如,你在X.c定义一个变量 unsigned char a;如果你想要在Y.C文件里使用这个变量,你可以在Y.C里引用,引用方法如下:extern unsigned char a;
你也可以在一个头文件里引用,引用方法是一样的:extern unsigned char a;
在头文件引用后,凡是包含了这个头文件的C文件,都可以使用那个变量a,而不必再另外引用了。
有一点要注意,引用的时候,不可以带初始化,例如,X.c文件里这样定义的变量:
unsigned char a = 100; 定义的时候可以初始化,在头文件或者其它C文件引用的时候,不能初始化,妈extern unsigned char a = 100;这是不可以的,直接引用就行了:extern unsigned char a;
更多追问追答
追问
是不是在头文件里写extern某某函数,但是不赋初值,然后在另一个c文件中定义这个函数,那这个c文件需要包涵这个头文件吗,还有我是把所有的声明定义都分别写在头文件和c文件里,那别的c文件要是要用到这些定义是要包涵头文件还是包涵用于定义的c文件呢
追答
记住了,变量,是先有定义,再有引用,如果只引用,不定义,这个变量无法使用.
用生活理解,引用,就是借用,比如邻居家借你家的东西用,定义,就是制造,邻居要借用,前提是你家要有才行。
举例来说,你家有个锅,非常好用,众邻居都喜欢,你又非常好,所以把锅放在一个公共环境下,这样,众邻居都可以拿来用。

那个锅,就是一个变量,所有权归你家,你家,就相当于定义了变量的C文件;
你把锅放在公共环境下,那个公共环境,就相当于被众多C文件包含的头文件;
而众邻居,就相当于要使用那个变量,并且包含了那个头文件的其他C文件。
帐号已注销
推荐于2017-10-01 · TA获得超过2015个赞
知道小有建树答主
回答量:1198
采纳率:64%
帮助的人:236万
展开全部
#ifdef MODULE_ANALOG

volatile signed int LatestCCI = 0; // most recent value of Instantaneous CC conversion
signed long CCoffset = 0x0000; // this is SUBTRACTED to EACH sample from the CC Accum.
signed int CCIoffset = 0; // this is in mA and is ONLY SUBTRACTED to the 1-second total, NOT TO EACH SAMPLE.

unsigned char FastRCCal = 0;
unsigned int SlowRCCal = 0;
unsigned char BGCCRCal = 0;
unsigned char ThermistorSelect = 0;
unsigned char CellToBalance = 0;
unsigned int cell_current[4]; //used for impedance measurement
signed long RunningAcc = 0;

#else

extern volatile signed int LatestCCI;
extern unsigned char FastRCCal;
extern unsigned int SlowRCCal;
extern unsigned char BGCCRCal;
extern unsigned char ThermistorSelect;
extern unsigned char CellToBalance;
extern unsigned int cell_current[4];
extern signed long RunningAcc;

#endif
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
德昂当
2013-04-27 · TA获得超过2842个赞
知道大有可为答主
回答量:1074
采纳率:100%
帮助的人:758万
展开全部
声明有没有加 extern呢
追问
加了哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式