打印
[PIC®/AVR®/dsPIC®产品]

dspic30F4011全局变量在哪个文件中定义

[复制链接]
809|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
十七dada|  楼主 | 2022-3-26 09:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
开发环境:MPLAB X IDE v5.35
编译器:xc16 v1.21
项目文件中只有main.c、user.c、user.h
芯片头文件p30F4011.h
我在main.c和user.c中include user.h和p30F4011.h
在user.h定义了全局变量:
extern unsigned char Mode_Flag,FW_Flag,RW_Flag,PWR_Flag;
extern unsigned int chargedata,BAT1data,BAT2data;
这几个变量在user.c和main.c中都会用到。
编译时提示main.c中以上变量没有定义,然后在main.c中用全局变量再定义一次,编译提示变量名称重复,去掉main.c中的extern,编译通过
这个是什么情况造成的?
全局变量到底在哪里定义,我看p30F4011.h中所有的变量,我只要在.c文件中include,然后就能直接使用啊,为什么我在user.h中定义,在.c中include就不行呢

使用特权

评论回复
沙发
ynwa| | 2022-3-28 14:29 | 只看该作者
首先你要先明确全局变量和外部变量分别是什么意思。不是加个extern就是在定义全局变量了。extern是外部变量声明的关键字,和全局变量的定义没有关系。用extern声明外部变量也不是变量定义,也要你定义好变量,然后用extern声明这些变量为外部变量。

使用特权

评论回复
板凳
十七dada|  楼主 | 2022-3-29 19:20 | 只看该作者
谢谢!我是刚学C语言,还不太懂

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

0

粉丝