c语言extern的作用域,关于全局变量和extern的用法-请问!

关于全局变量和extern的用法---请教!!!

1 我新建了一个new.uvproj

2 其中包括main.c  a.c  a.h  b.c  b.h 还有define.h(其中包括数据的申明和I/O口的定义)

3 我在define.h中定义了一个全局变量extern unsigned int Temperature_Temp;

4 这个变量在a.c中用到,所以在a.c中如下定义unsigned int Temperature_Temp;

5 在main.c中也要用到这个全局变量,那我还要在这个.c文件中再定义一次?我试过,这样keil报错,重复定义~~~

我的问题是:那我在a.c中使用extern定义,即extern unsigned int Temperature_Temp;

那按照我的理解:因为已经定义为全局变量了,那在main.c中就不需要定义了,这样理解对不对???

实验结果:这样keil虽不报错,可是出现很多警告!!!为什么???

后来,我在a.c中将其定义为extern unsigned int Temperature_Temp;

在main.c中将其定义为unsigned int Temperature_Temp;

就可以了(没有警告,也没有错误),可是,我百思不得其解,求大神指教~~~

101316145.gif

------解决思路----------------------

1)请参考 <> 和 <>,或者搜"c语言变量与作用域"

extern is used when a file needs to access a variable in another file that it may not have #included

directly. Therefore, extern does not actually carve out space for a new variable, it just provides the

compiler with sufficient information to access the remote variable.

2)对你的问题解释一下.其实记住一点就可以了:c语言中变量使用之前要声明, extern可以声明本作用域之外的变量.

1 我新建了一个new.uvproj

2 其中包括main.c  a.c  a.h  b.c  b.h 还有define.h(其中包括数据的申明和I/O口的定义)

3 我在define.h中定义了一个全局变量extern unsigned int Temperature_Temp;

4 这个变量在a.c中用到,所以在a.c中如下定义unsigned int Temperature_Temp;

5 在main.c中也要用到这个全局变量,那我还要在这个.c文件中再定义一次?我试过,这样keil报错,重复定义~~~

[注]:main.c 看不到 a.c中的定义,你可以把define.h, #include进来就可以了.

我的问题是:那我在a.c中使用extern定义,即extern unsigned int Temperature_Temp;

那按照我的理解:因为已经定义为全局变量了,那在main.c中就不需要定义了,这样理解对不对???

[注]:不对

实验结果:这样keil虽不报错,可是出现很多警告!!!为什么???

[注]:extern是声明,这样的话a.c中声明了,但没有地方定义这个变量

后来,我在a.c中将其定义为extern unsigned int Temperature_Temp;

在main.c中将其定义为unsigned int Temperature_Temp;

就可以了(没有警告,也没有错误),可是,我百思不得其解,

[注]:这里的意思是这个变量有地方定义了(main.c),别的地方要用也声明了(a.c),所以符合了c语言的规范.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值