想做嵌入式工程师,怎么能不知道.c文件和.h的区别呢

2017-12-28 17:04:43 来源:电子发烧友
分享到:
标签:
C文件,是程序设计中的一个重要概念。所谓“文件”一般是指存储在外部介质上数据的集合。一批文件是以数据的形式存放在外部介质(如磁盘)上的。操作系统是以文件为单位对数据进行管理的,也就是说,如果想找存在外部介质上的数据,必须先按文件名找到指定的文件,然后再从该文件中读取数据。
 
文件是程序设计中的一个重要概念。所谓“文件”一般是指存储在外部介质上数据的集合。一批文件是以数据的形式存放在外部介质(如磁盘)上的。操作系统是以文件为单位对数据进行管理的,也就是说,如果想找存在外部介质上的数据,必须先按文件名找到指定的文件,然后再从该文件中读取数据。要向外部介质上存储数据也必须先建立一个文件(以文件名标识),才能向它输出数据。
 
 
1h文件作用
 
1 方便开发:包含一些文件需要的共同的常量,结构,类型定义,函数,变量申明;
 
2 提供接口:对一个软件包来说可以提供一个给外界的接口(例如: stdio.h)。
 
2)h文件里应该有什么
 
常量,结构,类型定义,函数,变量申明。
 
3)h文件不应该有什么 变量定义, 函数定义。
 
4)extern问题 对于变量需要extern;
 
对于函数不需要因为函数的缺省状态是extern的。如果一个函数要改变为只在文件内可见,加staTIc。
 
5)include包含问题
 
虽然申明和类型定义可以重复,不过推荐使用条件编译。 #ifndef_FILENAME_H #define_FILENAME_H …… #endif
 
6)应该在那儿包含h文件
 
在需要的地方。比如某个提供接口的h文件仅仅被1.c文件需要,那么就在1.c文件里包含。
 
编写的程序一般会有.H文件和相对应的.C文件,.H文件是声明所用,.C文件是其函数实现部分。在调用时只要包含.H文件即可,我们没有听说过#include “delay.c”这类的程序,同时也不提倡使用这个形式。
 
在delay.h文件中: //对调用的函数声明 #ifndef__DELAY_H__ #define__DELAY_H__
 
externvoidDelayms(unsigned int n); #endif
 
在delay.c文件中: //函数实现部分 #include
 
//for crystal11.0592M
 
voidDelayms(unsigned int n) {
 
unsignedinTI,j; for(j=n;j》0;j--) for(i=112;i》0;i--); }
 
在主程序main.c中
 
#include //在主程序包含.h文件,不能包含.c文件 ……
 
上述方法仍然要求每建立一个工程就需要把对应的头文件复制到工程的文件夹里,这样看来仍然是比较麻烦的,这时还有另外一种方法就是将做好的头文件放在一个文件夹中,然后将这个文件夹整体拷贝到。.KEILC51INC下面,以后若需要使用某个头文件,就如使用KEIL自带的头文件一样方便了,在主函数mani()之前有一句#include 就可以在main()中使用其中的函数了。
 
 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
嵌入式Linux老司机的入门6“步”曲

由于很多人总问这个问题,所以这里做一个总结供大家参考。这里必须先说明,以下的步骤都是针对Linux系统的,并不面向WinCE。

从平面DRAM到3D DRAM
从平面DRAM到3D DRAM

DRAM正转变为卖方市场,也为DRAM厂商写下利润新高纪录。就像石油危机一样,在DRAM危机下,客户必须为DRAM付出更多代价。现在正是寻找低成本替代方案的时候了!

FreeRTOS操作系统最全面使用指南
FreeRTOS操作系统最全面使用指南

作为一个轻量级的操作系统,FreeRTOS提供的功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能等,可基本满足较小系统的需要。

嵌入式和单片机不一样?那它们的区别在哪?

单片机和嵌入式,其实没有什么标准的定义来区分他们,对于进行过单片机和嵌入式开发的开发者来说,都有他们自己的定义,接下来,就谈谈本人对这两个概念的理解和感悟。

学习嵌入式不得不知道的硬件十七问

将每个外设采用独立的信号线连到处理器不可行,且处理器在单一时间内只会对一个外设进行访问,那么久采用共享的信号线将所有的芯片连在一起呢?这就是总线概念的由来。

更多资讯
服务器和标准型DRAM依然看涨

南亚科总经理李培瑛16日表示,今年上半年DRAM价格持续看涨,但涨幅会收敛些,下半年则仍待观察三星、 SK海力士二大韩厂实际增产内容才能做明确分析。 目前来看,韩国二大厂都表明将依市场需求增产,分析DRAM产业到明年都可维持健康稳定。

学习Linux,这些内核常识你应该要知道

如果没有操作系统,内存需要程序自己来管理。譬如在uboot中要使用哪块内存,由程序自己决定的,没有注册也没有限制。此时如果程序不小心把同一块内存重复使用,就会出现程序逻辑错误。

FSMC知识详解,以及驱动TFTLCD原理
FSMC知识详解,以及驱动TFTLCD原理

FSMC:灵活的静态存储控制器

Linux驱动之Nand Flash四问,原理、工作方式都包含了
Linux驱动之Nand Flash四问,原理、工作方式都包含了

Nand Flash 是一个存储芯片那么:这样的操作很理“ 读地址A的数据,把数据B写到地址A”

GPIO内部结构、工作原理及相关寄存器详解(以STM32为例)
GPIO内部结构、工作原理及相关寄存器详解(以STM32为例)

STM32F1系列IO口的基本结构()IO口内部电路结构)

Moore8直播课堂