返回信息流在单片机的开发过程中,有些片上外围寄存器的声明一般厂家都会给出一个库文件,声明MCU的寄存器等。
如果c源文件1,有一系列的函数,要用到一些寄存器,而且这些寄存器必须当做外部变量,可不可以在文件1中不再定义那些寄存器,而是仅仅让文件1包含那个库文件就可以了呢?
(请从声明和定义的角度帮我解答下吧,谢谢。)
这是一条镜像帖。来源:北邮人论坛 / cpp / #34703同步于 2010/1/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
文件1通过#include某个库文件,这个库文件里包含1需要的变量,
pigg
2010/1/5镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
一般可以这么组织
// globals.h
// extern declaration goes here
// when use, include globals.h
extern int globals;
// globals.cpp
// definition goes here
int globals = 0;
【 在 pigg 的大作中提到: 】
: 在单片机的开发过程中,有些片上外围寄存器的声明一般厂家都会给出一个库文件,声明MCU的寄存器等。
: 如果c源文件1,有一系列的函数,要用到一些寄存器,而且这些寄存器必须当做外部变量,可不可以在文件1中不再定义那些寄存器,而是仅仅让文件1包含那个库文件就可以了呢?
: (请从声明和定义的角度帮我解答下吧,谢谢。)
当然不能再次定义了,只要把库里提供的声明头文件包含进来就可以了。目的是告诉编译器——这些变量是有主的,不要报错误。连接的时候,连接器会去搜索各个目标文件查找该变量的。
推荐 <C专家编程>
最近又翻出来看看,还是有不少收获
【 在 pigg 的大作中提到: 】
: 在单片机的开发过程中,有些片上外围寄存器的声明一般厂家都会给出一个库文件,声明MCU的寄存器等。
: 如果c源文件1,有一系列的函数,要用到一些寄存器,而且这些寄存器必须当做外部变量,可不可以在文件1中不再定义那些寄存器,而是仅仅让文件1包含那个库文件就可以了呢?
: (请从声明和定义的角度帮我解答下吧,谢谢。)