zoukankan      html  css  js  c++  java
  • 头文件如何避免重复声明

    向C语言项目 Graph1 中添加 Graph2.h 这样一个头文件。

    在 Clion 中我们会发现,在头文件Graph2.h中,会自动生成以下三行代码:

        #ifndef GRAPH1_GRAPH2_H
        #define GRAPH1_GRAPH2_H
    
        Part1
    
        #endif
    
        Part2
    
    
    1. 这三行代码主要作用是:防止该头文件被重复引用。“被重复引用” 的意思是:这个头文件在同一个 .c/cpp 文件中被多次声明。这种错误一般是由于 #include 的嵌套造成的。

      • 比如说,我们在 Graph2.h 中使用了 #include Graph3.h ,同时,在 Graph.c 文件中我们又使用了 #include Graph3.h 这就会造成重复引用。
    2. 头文件被重复引用的后果

      • 有些头文件重复引用只是增加了编译工作的工作量,不会引起太大的问题,仅仅是编译效率低一些。但是对于大工程来说,这也是不能忍受的;
      • 有些头文件重复包含,会引起错误,比如在头文件中定义了全局变量(虽然这种方式不被推荐,但确实是C规范允许的)这种会引起重复定义。
      • 这种方法只能解决一个文件中的重复引用问题。
    3. 这几句代码的意思

      • #ifndef = if not define 的缩写。
      • #define 宏定义
      • #endif 结束
      • 连起来,就是一个很简单的 if-else 语句。如果头文件没有被定义,就定义;否则就不用。
      • 请注意:如果 Part1 和 Part2 是两部分内容。如果没有定义过 Graph2.h ,定义它,并且执行 Part1 ;如果已经定义过了,那就执行 Part2。从另一个角度来看,Part1 的代码只会被执行一次。
  • 相关阅读:
    差分约束系统
    LCA
    CRB and Candies LCM 性质
    【强连通分量】 Kosaraju和Tarjan算法 (标准模板+详细注释)
    最小生成树
    堆优化的迪杰斯特拉算法
    SPFA算法
    Floyd算法
    Dijkstra算法
    图论中环的判断
  • 原文地址:https://www.cnblogs.com/rongyupan/p/12487150.html
Copyright © 2011-2022 走看看