原因:C中,某一个重要的头文件可能被多个文件包含,如果编译的多个文件均包含了同一个头文件,

就可能存在,一个头文件被多次包含的问题。

用法:这个问题,一般用#ifndef来解决。

  1、定义一个与文件名相同的标识符来标识该头文件,点号用下划线替换,例如:myhead_h_,
      因为前下划线被系统库占用了,所以,多添加一个后划线来标识,表示用于标识文件名的惯用法。

  2、然后用#ifndef来包含需要的头文件内容。如果之前没有定义该标识符,说明是第一次,则包含内容。

      如果,已经定义了,则略过。

  3、具体的写法如下:

    #ifndef  myhead_h_
    #define  myhead_h_
    ... 此处为头文件内容
    #endif

#ifndef用于避免多重包含的更多相关文章

  1. c++中,保证头文件只被编译一次,避免多重包含的方法

    保证头文件只被编译一次 #pragma once这是一个比较常用的C/C++杂注,只要在头文件的最开始加入这条杂注,就能够保证头文件只被编译一次. #pragma once是编译器相关的,有的编译器支 ...

  2. C/C++ 防止头文件重复包含 #pragma once 与 #ifndef 的区别

    为了避免同一个头文件被多重包含/重复包含,有两种方式: 方式一: #ifndef XXX #define XXX ... ...  //声明语句 #endif  //XXX 方式二: #pragma ...

  3. 《C++ Primer》笔记-#include,#ifndef

    1.理解 #include 指示是怎样工作的 #include 设 施是 C++ 预处理器的一部分.预处理器处理程序的源代码,在编译器之前运行. C++ 继承了 C 的非常精细的预处理器.现在的 C+ ...

  4. #ifndef用法

    用于避免重复包含头文件 #ifndef _STDIO_H_ #define _STDIO_H_ ...... #endif

  5. c/c++头文件中#ifndef/#define/#endif的用法

    想必很多人都看过“头文件中用到的 #ifndef/#define/#endif 来防止该头文件被重复引用”.但是是否能理解“被重复引用”是什么意思?头文件被重复引用了,会产生什么后果?是不是所有的头文 ...

  6. [C++] 头文件中的#ifndef,#define,#endif以及#pragma用法

    想必很多人都看过“头文件中用到的 #ifndef/#define/#endif 来防止该头文件被重复引用”.但是是否能理解“被重复引用”是什么意思?头文件被重复引用了,会产生什么后果?是不是所有的头文 ...

  7. Linux命令总结大全,包含所有linux命令

    使用说明:此文档包含所有的Linux命令,只有你想不到的没有你看不到的,此文档共计10万余字,有8400多行,预计阅读时间差不多需要3个小时左右,所以要给大家说一说如何阅读此文档 为了方便大家阅读,我 ...

  8. 头文件的宏定义#ifndef测试

    一.入题 在头文件的书写中,都加入了如下内容: #ifndef __头文件名_H #define __头文件名_H #endif 曾经在书中看到的解释是“防止重复定义”,今天突然想到为什么是这样的解释 ...

  9. @SpringBootApplication 组合注解包含哪些注解及作用

    序:在学习springboot,教程一般对一些注解语焉不详,发现@SpringBootApplication 这个注解包含了很多注解,也就是说使用这个注解可以少写几个注解,这里看源码粘出来一些,仅用于 ...

随机推荐

  1. (笔试题)删除K位数字

    题目: 现有一个 n 位数,你需要删除其中的 k 位,请问如何删除才能使得剩下的数最大? 比如当数为 2319274, k=1 时,删去 2 变成 319274 后是可能的最大值. 思路: 1.贪心算 ...

  2. 成员函数的const究竟修饰的是谁

    demo <pre name="code" class="cpp">class Test { public: const void OpVar(in ...

  3. 如何不使用pthread_cancel而杀死线程

    http://www.cnblogs.com/no7dw/archive/2012/09/27/2705847.html During the time I use standalone cross ...

  4. 上传的文件放在SVN服务器的哪个目录下

    SVN服务器版本库有两种格式,一种为FSFS,一种为BDB 把文件上传到SVN版本库后,上传的文件不再以文件原来的格式存储,而是被svn以它自定义的格式压缩成版本库数据,存放在版本库中. 如果是FSF ...

  5. Mac Oracle SqlDeveloper 快捷输入

    用惯了 plsql 的快捷输入,换了 Mac Oracle SqlDeveloper反倒是找不到了,翻出去找了几次终于找到 SqlDeveloper -- preferences -- 数据库(dat ...

  6. AutoResponder Reference

    Fiddler's AutoResponder tab allows you to return files from your local disk instead of transmitting ...

  7. Navicat如何直接修改表中数据?

    Navicat如何直接修改表中数据?

  8. H5实现的手机摇一摇

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  9. js立即执行函数应用--事件绑定

    js中立即执行函数的应用:应用到事件绑定上. 少说多做,直接运行代码(代码中有注释): <!DOCTYPE html> <html lang="zh"> & ...

  10. javaScriptObject转String

    function obj2str(o){ var r = []; if(typeof o =="string") return "\""+o.repl ...