前言
看见头文件中的条件编译就犯怵,不知什么意思,但是,你老师说:”就得那么写“,你照做,但是知其然而不知其所以然。今天分享下是自己的理解~~~纯属个人献丑,新手可阅,老鸟绕道。
代码段
涨姿势
分析:
第1、2行和第14行:防止重复定义。即第一部分:
在首次包含这个文件时,没有定义宏DSP_ADC_BSP_H_,预处理器允许保留#ifndef和#endif之间的多行内容。
如果再次包含此文件,预处理器将把#ifndef和#endif之间的内容删除。意思是如果两个.c文件同时包含了该.h文件,只会定义一次。
第3~12行:提供只在.h文件中只定义一次就可以在别的模块中使用外部函数与变量的方法。
首先说明extern:
extern int i;
该声明编译器提供的信息是,i 是int型变量 但是编译器不会为i分配存储单元。上述声明不是变量的定义,而是提示编译器需要访问定义在别处的变量。
变量在程序中可以多次声明,但只能有一次定义。
在与之对应模块的.c文件中会有这么一句话:
#define _DSP_ADC_BSP_C_ //定义了_DSP_ADC_BSP_C_
那么当为本模块.c文件时,ADCBSPEXT替换为空白。
函数声明就是:
当为其他.c文件用到这些函数式,ADCBSPEXT替换为extern以提供使用。
好了今天的分享就这里了,内容非常少,有过基础的应该都知道。在这里献丑了