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

前言

0?wx_fmt=jpeg

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

代码段

0?wx_fmt=jpeg

涨姿势

分析:

第1、2行和第14行:防止重复定义。即第一部分:

0?wx_fmt=jpeg

在首次包含这个文件时,没有定义宏DSP_ADC_BSP_H_,预处理器允许保留#ifndef和#endif之间的多行内容。

如果再次包含此文件,预处理器将把#ifndef和#endif之间的内容删除。意思是如果两个.c文件同时包含了该.h文件,只会定义一次。

0?wx_fmt=jpeg

第3~12行:提供只在.h文件中只定义一次就可以在别的模块中使用外部函数与变量的方法。

首先说明extern:

extern int i;

该声明编译器提供的信息是,i 是int型变量 但是编译器不会为i分配存储单元。上述声明不是变量的定义,而是提示编译器需要访问定义在别处的变量。

变量在程序中可以多次声明,但只能有一次定义。

0?wx_fmt=jpeg

在与之对应模块的.c文件中会有这么一句话:

#define _DSP_ADC_BSP_C_ //定义了_DSP_ADC_BSP_C_

那么当为本模块.c文件时,ADCBSPEXT替换为空白。

函数声明就是:

0?wx_fmt=jpeg

当为其他.c文件用到这些函数式,ADCBSPEXT替换为extern以提供使用。

0?wx_fmt=jpeg

0?wx_fmt=jpeg

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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值