在c语言中,头文件中的加入 #ifndef   #define   #endif 目的防止该头文件被重复引用

其实“被重复引用”是指一个头文件在同一个c文件中被include了多次,这种错误是由于include嵌套造成的。比如在a.h文件#include "c.h"  而此时b.cpp文件包含#include "a.h" 和#include "c.h"此时就会造成c.h重复引用

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

有些头文件重复引用只是增加了编译工作的工作量,不会引起太大的问题,仅仅是编译效率低一些,但是对于大工程而言编译效率低下那将是一件多么痛苦的事情。
有些头文件重复包含,会引起错误,比如在头文件中定义了全局变量(虽然这种方式不被推荐,但确实是C规范允许的)这种会引起重复定义。

使用格式
#ifndef A_H  (if not  定义 a.h)
#define A_H   (引入 a.h)

#include <xxx.h>
#include "xxx.h"

void func(int a);

#endif A_H

c语言中的 #ifndef/#define/#endif的作用相关推荐

  1. 每日一题(12)—— .h头文件中ifndef/define/endif的作用

     .h头文件中ifndef/define/endif的作用? 分析: 防止头文件被重复包含. #ifndef _TEST_H_ #define _TEST_H_/* test.h */#endif / ...

  2. #ifndef #define #endif的作用

    #ifndef #define #endif的作用 在一个大的软件工程里面,可能会有多个文件同时包含一个头文件.当这些文件编译链接成一个可执行文件时,就会出现大量重定义的错误. 在头文件中实用#ifn ...

  3. 【C/C++】ifndef/define/endif的作用

    参考资料来源于网上,还未经本人实验证明. 1 作用   防止头文件被重复包含和编译. 头文件重复包含会增大程序大小,重复编译增加编译时间.   解释:#ifndef起到的效果是防止一个源文件多次包含同 ...

  4. #ifndef, #define, #endif的作用

    目录 作用 示例 作用 #ifndef 它是if not define 的简写,是宏定义的一种,实际上确切的说,这应该是预处理功能三种(宏定义.文件包含.条件编译)中的一种--条件编译. 在c语言中, ...

  5. C++中#ifndef/#define/#endif使用详解

    想必很多人都看过"头文件中的 #ifndef/#define/#endif 防止该头文件被重复引用".但是是否能理解"被重复引用"是什么意思?是不能在不同的两个 ...

  6. ifndef/define/endif——主要目的是防止头文件的重复包含和编译

    原文:http://www.jb51.net/article/100939.htm 原文:https://blog.csdn.net/abc5382334/article/details/180527 ...

  7. 头文件为什么要加#ifndef #define #endif

    一 #ifndef 在头文件中的作用 一个大的软件工程里有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时,就会出现大量"重定义"的错误.这时在头文件中使用#ifn ...

  8. #ifndef/#define/#endif

    #ifndef/#define/#endif 头文件中的 #ifndef/#define/#endif 防止该头文件被重复引用 "被重复引用"是指一个头文件在同一个cpp文件中被i ...

  9. #ifndef.#define, #endif 的用法

    文件中的#ifndef.#define, #endif 很关键,是为了避免多重包含,比如如果两个C文件同时包含同一头文件,那么就会出现问题,所以使用这种方法可以有效避免这种情况. 一般用法: 以add ...

  10. #ifndef/#define/#endif 防止该头文件被重复引用

       转载自:http://blog.csdn.net/abc5382334/article/details/18052757    想必很多人都看过"头文件中的 #ifndef/#defi ...

最新文章

  1. CT片居然可以这么玩:用头部CT断层扫描片复原三维头像
  2. android 重叠view 重叠布局,按比例布局
  3. 以二进制的形式保存在数据库中
  4. 睡觉前后爆笑的情侣小两口~媳妇不要闹了~
  5. oracle sql取查询结果第一条,SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)...
  6. 面向对象3-析构函数和私有属性
  7. 职场小白靠这三招PDF技巧逆袭为职场达人
  8. 趁老王不在,和隔壁邻居斗斗地主,比比大小
  9. 如何成为迅雷的高级玩家
  10. 编译原理: Subset Construction 子集构造法(幂集构造)(NFA转DFA)
  11. 西恩科技更新招股书:IPO前大手笔分红“套现”, 赵志安为实控人
  12. 深入浅出理解数据分析系列之:Python安装Excel文档库openpyxl和Pycharm为项目安装Excel文档库openpyxl
  13. Android自定义view-电子签名画板
  14. mysql 1264_关于MySQL的1264错误处理及sql_mode设置
  15. 应用程序正常初始化0xc0000135失败的解决办法
  16. 二级考python还是office_大学生考二级为什么考office比C语言科目会更有价值
  17. 建仓价 持仓价 平仓价
  18. AcWing 0x00. 语法基础课【Python3】版题解-顺序/判断/循环语句
  19. Oracle数据库基础(还在学java吗?不如来看看oracle)
  20. 每日营养摄入计算与主要的食物成分表(健身必备)

热门文章

  1. mandriva urpm类命令
  2. word中插入题注 表1 图1
  3. 新辰:雕爷与张朝阳分享创业感悟 给90后创业者打鸡血共勉
  4. 使用excel2016 制作甘特图
  5. 小程序源码:收款码三合一制作-多玩法安装简单
  6. word护眼模式使用方法
  7. Word 标题前面的黑点
  8. 定位模组 ppm CEP 等参数 说明
  9. JS+MySQL获取 京东 省市区 地区
  10. 亨嘉之会话数据行业未来 万字长文解码2021数据技术嘉年华