美文网首页
C++ 如何避免一个头文件被include多次

C++ 如何避免一个头文件被include多次

作者: PengQ1 | 来源:发表于2020-03-02 20:32 被阅读0次

  同一个文件中只能将一个头文件include一次。记住这个规则很容易,但是很可能在不知情的情况下将头文件包含多次,因为你include的头文件里可能还会include其它的头文件,这样层层嵌套,很容易出现上面的问题。这时就会带来编译的错误。
  C/C++中有一种标准的技术可以有效避免多次include同一个头文件,即预编译指令#ifndef(if not defined)。例如对于我们定义的头文件<coordin.h>,可以有如下写法:

#ifndef _COORDIN_H
#define _COORDIN_H
...     // 头文件的内容
#endif

  对于这种写法有以下几点说明:
    1. COORDIN_H可以是任意的名字,这种写法一是该名称与该头文件相关,其次是考虑到该名称要在其它地方不太可能被定义,所以以下划线“”开头和彼此连接,
    2. 编译器第一次遇到该文件的时候,"_COORDIN_H"还没有被define, 因此会执行里面的内容,首先定义"_COORDIN_H",其次读取头文件的核心内容。当以后再include这个头文件的时候,"_COORDIN_H"已经被定义了,因此头文件的主体也就不会再被读取了。
    3. 注意,这种方法并不能防止编译器将文件include两次,只是可以让它忽略第一次include以外的所有内容。大多数的C/C++头文件都是用这种防护(guarding)方案。
    4. 通常情况下使用#define语句来创造符号常量,如下所示:

#define MAXIMUM 4096

但只要#define用于定义名称,只使用其本身就足以完成该名称的定义了。

相关文章

网友评论

      本文标题:C++ 如何避免一个头文件被include多次

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