C语言查缺补漏(十)#ifndef与#endif

忽略点十:#ifndef与#endif

​ 印象中两者在C/C++项目创建头文件时自动添加,一直没有深究它的意义,决定跟大家讲一下它的用法,顺便也是对自己的查缺补漏

​ 要将他们,首先要说一下项目,对于C语言项目来说,多文件中的每个文件的特殊全局变量,类型定义,函数可能需要在多个文件中被使用,这时可将这些全局变量,类型定义,函数声明单独写成一个头文件

​ 这些头文件一般采用 源文件名.h 命名,在需要用到该头文件的文件中采用#include “源文件名.h” 引用(注意不是尖括号<>,而是""),不仅源文件可以引用头文件,头文件也可以引用头文件。

​ 这时候,会出现一种情况:源文件1.c中引用2.h和3.h头文件,而2.h头文件中也引用了3.h头文件。 这时3.h头文件被引用了两次,有可能会造成函数,变量的重复声明!!!

​ 为了避免这一种情况的出现,我们可以在3.h中定义一个宏:

#define 宏名

​ 只要这个宏定义过,就跳过整个3.h的整个内容

​ 如何实现这一点呢?

​ 对,就是利用#ifndef 宏名和#endif,格式如下:

#ifndef 宏名		//判断是否声明过该宏名,如果声明过,直接跳到#endif
#define 宏名		//如果没有声明过,声明该宏名
//.h文件内容
#endif

​ 这样又会造成一个问题,若2.h的验证宏名为p(即#ifndef后声明的宏名),3.h的验证宏名也为p,那么先引用2.h,后引用3.h,会造成3.h引用不上。也就是说,必须得保证每个头文件的#ifndef后的宏名都不一样!!!

​ 因此,此类宏名有一个固定格式,即:工程名 _ 路径名_ 文件名_ H_

​ 这样就能避免重名的风险

​ 以上就是#ifndef和#endif的全部,Over!

转载请注明出处!!!

​ 如果有写的不对或者不全面的地方 可通过主页的联系方式进行指正,谢谢!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值