遇C语言条件编译就犯怵,不知什么意思,c语言头文件中的宏定义

前言

看见头文件中的条件编译就犯怵,不知什么意思,但是,你老师说:”就得那么写“,你照做,但是知其然而不知其所以然。今天分享下是自己的理解~~~纯属个人献丑,新手可阅,老鸟绕道。

代码段

涨姿势

分析:

第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以提供使用。

好了今天的分享就这里了,内容非常少,有过基础的应该都知道。在这里献丑了



阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭