防卫式声明

标准格式:在头文件中写:

#ifndef -XXX-
#define -XXX-
.......
#endif


通过阅读 GeekBand c++学习笔记——防卫式声明的背后发现编译器对头文件进行了以下预处理

  1. 编译器将处理掉所有注释,以空格代替;
  2. 删除#define,展开所有宏定义;
  3. 处理条件编译指令#if、#ifdef、#elif、#else、#endif;
  4. 处理#include,展开被包含的头文件(直接将头文件复制进文件)
  5. 保留编译器需要使用的#progma指令等等。

        编译器还会做很多其他事情,但是从第四条可以看出,会将头文件中写的代码直接复制进文件。那么可以想象,如果有多份头文件均不进行防卫式声明,均包含了类似<iostream>这种内容很多的头文件,经过预处理以后的文件,即便自己只写了一行代码cout,它包含的代码量将是何其的庞大。这还不是最关键的问题,关键是头文件中定义了一个变量,那么多次包含该头文件之后,就会产生重复定义的问题,那么防卫式声明其实防止重复声明与定义。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值