ifndef/define/endif:简而言之就是避免头文件被重复引用。

(ifdef/define/endif是已定义的宏为真,ifndef/define/endif是未定义的宏为真)

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

如编写头文件ArrayList.h
在头文件开头写上两行:
#ifndef _Array_List_h
#define ArrayList.h //一般是文件名的大写
头文件结尾写上一行:#endif

这样一个工程文件里同时包含两个ArrayList.h时,就不会出现重定义的错误了。

分析:当第一次包含ArrayList.h时,由于没有定义_Array_List_h,条件为真,这样就会包含(执行)#ifndef _Array_List_h和#endif之间的代码,当第二次包含test.h时前面一次已经定义了_Array_List_h,条件为假,#ifndef _Array_List_h和#endif之间的代码也就不会再次被包含,这样就避免了重定义了。主要用于防止重复定义宏和重复包含头文件

版权声明:本文为CSDN博主「Comwangquan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45507472/article/details/117928374

ifndef/define/endif的使用相关推荐

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

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

  2. c:#ifndef, #define, #endif 作用

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

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

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

  4. [Windows编程] #pragma once 和#ifndef ... #define ... #endif 比较

    C++中防止头文件被多次include 的常见方式有: 1) 用#ifndef ...  #define ... #endif  宏 #ifndef __MYHEADER_H__ #define __ ...

  5. C语言头文件为什么要加#ifndef #define #endif(防止头文件重复包含)

    当你用VC的菜单新增一个类,你会发现自动生成的代码总是类似下面的样子: #if !defined(AFX_XXXX__INCLUDED_)#define AFX_XXXX__INCLUDED_具体代码 ...

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

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

  7. #ifndef/#define/#endif

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

  8. 【转载】#pragma once与#ifndef #define #endif的区别

    一.相同点         两者的共同点都是为了避免同一个文件被 include 多次,但是 #ifndef #define #endif 不只有这个作用.  在能够支持这两种方式的编译器上,二者并没 ...

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

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

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

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

最新文章

  1. 关于js中cookie的认识
  2. AI技术诠释全新智能,多方位优化样样贴心
  3. [置顶] AMF序列化为对象和AMF序列化为二进制字节流
  4. Zuul spring cloud zuul com.netflix.zuul.exception.ZuulException GENERAL解决方案
  5. 项目下创建文件_Linux 下创建和使用交换文件
  6. Qt下拉对话框 ComboBox的用法
  7. 在tomcat服务器部署finereport
  8. 什么是同步异步?阻塞非阻塞?
  9. Java反射及 IoC原理、内省机制
  10. ftp script for DOS
  11. Processing的条件式
  12. # 创业计划书-样例参考五千套(一)
  13. 005 Java反射面试题
  14. paraview热流图(5):只保留一个网格
  15. 移动安全初探:窃取微信聊天记录、Hacking Android with Metasploit
  16. 怎么给word文档注音_如何给Word文档中的汉字加拼音?一键加拼音超级方便
  17. C++综合练习——身份证
  18. 西北计算机大赛奖金有多少,我校学生2019年中国大学生计算机设计大赛西北赛区决赛中获得佳绩...
  19. Wijmo JavaScript UI 5.20222.877 Crack
  20. echarts实现中国地图,山西地图,图表面积图配置项

热门文章

  1. oracle1791,安装11G,监听相关问题
  2. 建筑建材行业采购平台解决方案
  3. 努力做一个灵魂画师、Affinity Designer使用(一)
  4. DenseNet:Densely Connected Convolutional Networks--CVPR2017最佳论文奖
  5. 公积金新政被指看上去美 一线城市额度不够用
  6. ROS发布订阅的消息的种类及使用
  7. python写程序计算无穷级数_圆周率 π 展开 为 无穷级数
  8. 【NLP】中文分词歧义举例
  9. Linux启动nginx
  10. 不同种类线扫光源的特性