• #ifndef HeaderName_h #define HeaderName_h #endif 使用详解(转)


    原文:#ifndef HeaderName_h #define HeaderName_h #endif 使用详解

    想必很多人都看到过头文件中写有:#ifndef HeaderName_h

                                                   #define HeaderName_h

                                                      // 这里面通常写各种宏定义、其他头文件的包含

                                                   #endif 

    这样做的目的:防止该头文件被重复引用。

    “头文件被重复引用”是什么意思?

    答:其实“被重复引用”是指一个头文件在同一个cpp文件中被include了多次,这种错误常常是由于include嵌套造成的。

    比如:存在a.h文件#include "c.h",而b.cpp文件同时#include "a.h" 和#include "c.h",此时就会造成c.h被b.cpp重复引用。

     

    头文件被重复引用引起的后果:

    有些头文件重复引用只是增加了编译工作的工作量,不会引起太大的问题,仅仅是编译效率低一些。但是对于大工程而言,编译效率低下那将是一件多么痛苦的事情。

    而有些头文件重复包含,则会引起错误,比如:在头文件中定义了全局变量(虽然这种方式不被推荐,但确实是C规范允许的),这种头文件重复包含会引起全局变量的重复定义。

     

    是不是所有的头文件中都要加入#ifndef/#define/#endif 这些代码?

    答案:不是一定要加,但最好加上!这是因为:不管怎样,用ifnde xxx  #define xxx  #endif,只有好处,没有坏处。

             并且,个人觉得培养一个好的编程习惯是学习编程的一个重要方面。

     

    下面给一个#ifndef/#define/#endif的格式:

    首先写:#ifndef A_H   (意思是:"if not define a.h",即如果不存在a.h)

    接着写:#define A_H  (那就引入a.h)

    最后写:#endif   (否则不需要引入a.h,即已存在a.h,无需再次引入)

    例:
    #ifndef GRAPHICS_H // 防止graphics.h被重复引用 
    #define GRAPHICS_H 


    #include <math.h> // 引用标准库的头文件 
    … 
    #include “header.h” // 引用非标准库的头文件 
    … 
    void Function1(…); // 全局函数声明 
    … 
    class Box // 类结构声明 

    … 
    }; 

    #endif

    少壮不识cpp,老大方知cpp可怕
  • 相关阅读:
    1.1.28 文字所在段落增加下划线
    Microsoft Project 2010基础使用方法
    16.3 将Win7文档的内容到复制Linux的vi中
    3.4 在Word中的公式和序号之间填充连续的点
    18.25 JLink调试程序步骤
    18.24 Ubuntu修改静态IP
    18.23 inline函数功能
    18.22 sprintf函数功能
    18.21 关键字extern
    18.20 频率单位转换
  • 原文地址:https://www.cnblogs.com/Jacket-K/p/7525274.html
Copyright © 2020-2023  润新知