防卫式声明

来源:互联网 发布:php源码大全 编辑:程序博客网 时间:2024/05/18 00:35

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

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


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

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

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


0 0
原创粉丝点击