OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7279|回复: 1

关于extern,我遇到的一些问题。

[复制链接]

4

主题

8

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2013-1-19
在线时间
0 小时
发表于 2013-1-19 23:22:30 | 显示全部楼层 |阅读模式
        今天,在调试一个模块,CC2500,只是无线的数据收发,环境已经搭好了,各种功能正常,SPI传输,LED显示,SD卡的读取,问题就是在于那个CC2500(感觉我废话有点多)

-------------------------------------------------------上面是情况简介,我是分割线---------------------------------------------------------------------------------------------------------------------------------------------------

        那个CC2500是一个模块来的,带有.h和.c文件,不过小弟是个菜,对于STM-32来说是菜吧。

/*变量*/
extern U16 SendNum;
extern U16 RevNum;
extern U8 RevBage;
extern U8 TRXFlag;

/*函数*/
extern U8 SPI_Tran(U8 data8);
extern void CC2500WStrobe(U8 data8);
extern void CC2500W1BYTE(U8 ADDR,U8 data8);
extern U8 CC2500R1BYTE(U8 ADDR);
extern void CC2500WFIFO(U8 *buf,U8 buflength);
extern U8 CC2500RFIFO(U8 *buf,U8 buflength);
extern void CC2500_RST(void);
extern void CC2500_Init(void);
extern void CC2500_SEND(void);
extern void CC2500_REV(void);

上面是.h的一些定义,我编译不过去,然后把extern给删了,把上面那些定义都全部弄到.c那里,

/*变量*/
U16 SendNum;
U16 RevNum;
U8 RevBage;
U8 TRXFlag;

/*函数*/
U8 SPI_Tran(U8 data8);
void CC2500WStrobe(U8 data8);
void CC2500W1BYTE(U8 ADDR,U8 data8);
U8 CC2500R1BYTE(U8 ADDR);
void CC2500WFIFO(U8 *buf,U8 buflength);
U8 CC2500RFIFO(U8 *buf,U8 buflength);
void CC2500_RST(void);
void CC2500_Init(void);
void CC2500_SEND(void);
void CC2500_REV(void);

可编译还是有问题,1行给我出现1个警告1个错误。
..\HARDWARE\CC2500\CC2500.c(13): warning:  #64-D: declaration does not declare anything
..\HARDWARE\CC2500\CC2500.c(13): error:  #77-D: this declaration has no storage class or type specifier

上面说,我声明了,没有分配空间,为啥呢?
没有引用的话,倒是真的,我main();还没有写呢!


新手求解答...





正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

20

主题

562

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
670
金钱
670
注册时间
2012-2-28
在线时间
0 小时
发表于 2013-1-20 09:51:09 | 显示全部楼层
额,这个EXTERN定义的函数,说明你在外部也可以调用这个函数,所以你需要两个部分:定义和声明。

定义,就是定义出这个函数的结构体,你要实现什么功能的代码……

声明,就像我们平常声明函数一样,只不过是在.h文件中声明,而且前面加extern……

你直接把extern删掉,这个函数是不是都没定义过呢???是不是需要自己写的,而你的模块中并没有带……
努力,前进。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-21 21:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表