美文网首页
C++重复包含头文件坏处

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

作者: jazzi | 来源:发表于2016-12-23 15:11 被阅读0次

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

      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;的定义,违背了一次定义的原则,所以会出错。

相关文章

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

    为什么要避免头文件重复包含呢? 1.我们知道在编译c或c++程序时候,编译器首先要对程序进行预处理,预处理其...

  • C语言编程知识点回顾

    头文件 防止头文件重复包含 将头文件包含在 这里的xxxx通常是\_文件名大写\_,不要重复使用这个宏定义。 兼容...

  • 知识点

    1、memse()的头文件不同的包含 C中头文件C中为 或 C++中头文件C++中为

  • C++语法系列之1

    今天开始C++语法系列第一篇,讲解C++基础语法。 1 使用预处理器指令避免重复包含头文件 方法1: 方法2: 2...

  • Header Guard

    Header Guard:防止头文件被重复包含Header Guard形式: 重复包含的问题: 预处理速度慢 重复...

  • C++思考笔记(4):防止头文件重复包含

    #ifndef和#pragma once 一般防止头文件重复包含问题,基本都是用这两种方式来解决。#ifndef:...

  • iOS基础面试题

    对头文件的引用import和include区别import头文件会去重,最多包含一次include会重复包含 解释...

  • 编程规范 - 头文件

    【摘自《 Google C++ 编程规范》】 所有头文件都应该使用 #define 防止头文件被多重包含(mult...

  • c++ 11智能指针

    1 概要 C++ 11 包含了智能指针,需要包含头文件#include unique_ptr

  • C++基础

    C++ readme 避免头文件重复定义, extern C的用法: 内联函数: inline function ...

网友评论

      本文标题:C++重复包含头文件坏处

      本文链接:https://www.haomeiwen.com/subject/ukpkvttx.html