防卫式声明
来源:互联网 发布:php源码大全 编辑:程序博客网 时间:2024/05/18 00:35
标准格式:在头文件中写:
#ifndef -XXX-#define -XXX-.......#endif
通过阅读 GeekBand c++学习笔记——防卫式声明的背后,发现编译器对头文件进行了以下预处理:
- 编译器将处理掉所有注释,以空格代替;
- 删除#define,展开所有宏定义;
- 处理条件编译指令#if、#ifdef、#elif、#else、#endif;
- 处理#include,展开被包含的头文件(直接将头文件复制进文件)
- 保留编译器需要使用的#progma指令等等。
编译器还会做很多其他事情,但是从第四条可以看出,会将头文件中写的代码直接复制进文件。那么可以想象,如果有多份头文件均不进行防卫式声明,均包含了类似<iostream>这种内容很多的头文件,经过预处理以后的文件,即便自己只写了一行代码cout,它包含的代码量将是何其的庞大。这还不是最关键的问题,关键是头文件中定义了一个变量,那么多次包含该头文件之后,就会产生重复定义的问题,那么防卫式声明其实防止重复声明与定义。
0 0
- 防卫式声明
- 防卫式声明笔记----C++学习之路
- GeekBand c++学习笔记——防卫式声明的背后
- [C++]关于头文件中的防卫式声明(#ifndef...#pragma once)
- 防卫
- 防卫导弹
- 防卫导弹
- 个人网络安全防卫手册
- 女子人身安全防卫指南
- 防卫导弹 解题报告
- 防卫导弹问题
- 动态规划之防卫导弹
- 防卫导弹_动态规划
- C++学习笔记01之类的基本实现过程(头文件的防卫式定义, 具体类的定义和实现, 函数的传递类型和返回类型)
- 活中自我防卫的一些习惯
- 生活中自我防卫的一些习惯
- 看各国首脑夸张防卫!(组图)
- 防卫导弹(动态规划入门题)
- ScrollView快速滑动或拖拽停止事件监听
- 第十一周OJ——牛顿迭代法求根
- php上传文件中文文件名乱码的解决方法
- bias 和 variance 的推导
- Linux命令-挂载命令mount
- 防卫式声明
- uoj52逃跑(最短路)
- HTTP协议小知识
- cmake:EXCLUDE_FROM_ALL介绍
- drawing some geometric figure
- hdu 3583(概率dp)
- Spark系列修炼---入门笔记4
- 1 Creating a Web API Project
- HDU 3787 A+B