C++重复包含头文件坏处

为什么要避免头文件重复包含呢?

      1.我们知道在编译c或c++程序时候,编译器首先要对程序进行预处理,预处理其中一项工作便是将你源程序中#include的头文件完整的展开,如果你有意或无意的多次包含相同的头文件,会导致编译器在后面的编译步骤多次编译该头文件,工程代码量小还好,工程量一大会使整个项目编译速度变的缓慢,后期的维护修改变得困难。

      2.第一点讲的头文件重复包含的坏处其实还能忍,毕竟现在计算机运算能力已经不是早些时候那么慢了。但是头文件重复包含带来的最大坏处是会使程序在编译链接的时候崩溃,这是我们无法容忍的。

来看个例子:

//a.h

#include

int A=1;

//b.h

#include "a.h"

void f(){printf("%d",A);}

//main.c

#include

#include"a.h"

#include"b.h"

void main(){f();}

此时输入gcc -c main.c进行编译,会提示A重复定义,程序崩溃:


然后输入gcc -E main.c -o main.i看下预处理内容:

可以看到6015行和6021行重复出现int A=1;的定义,违背了一次定义的原则,所以会出错。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,087评论 19 139
  • 来自陈浩的一片老文,但绝对营养。 示例工程:3 个头文件*.h,和 8 个 C 文件*.c。 初 编译过程,源文件...
    周筱鲁阅读 4,752评论 0 17
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 7,897评论 0 27
  • 转载文章:C++中的头文件和源文件 一、C++编译模式 通常,在一个C++程序中,只包含两类文件——.cpp文件和...
    Mr希灵阅读 4,860评论 1 10
  • 人一辈子会听到很多心里话,我很庆幸,因为我曾经听到过,我也很难过,因为我无法忘掉,这里就是一个人的记忆,你无法触碰...
    心独时刻阅读 220评论 0 1