1. 作用

防止头文件被重复引用,防止被重复编译。

2. 简介

#ifndef 它是if not define的简写,是宏定义的一种,确切的说是预处理功能(宏定义、文件包含、条件编译)三种中的一种——条件编译。

使用#ifndef可以避免以下错误:如果在.h文件中定义了全局变量,一个C文件包含了.h文件多次,如果不加#ifndef宏定义,会出现变量重复定义的错误;如果加了#ifndef则不会出现这种错误.

3. 一般用法

以add.h为例

#ifndef  _ADD_H_
#define _ADD_H_int add(int a ,int b);#endif

编写add.cpp文件

#include "add.h"
int add(int a, int b)
{return a + b;
}

主函数main.cpp

#include <iostream>
#include "add.h"
using namespace std;
int main()
{    int a ;a = add(5,7);cout<<a<<endl;return 0;
}
  1. 程序中_ADD_H_为预处理变量,书写格式一般是头文件名大写,前后加下划线,".“用下划线”_"代替.
  2. 预处理变量一般有两种状态:已定义或未定义

#ifndef指示检测指定的预处理变量是否为定义,如果未定义,那么跟在后面的只是被处理,直到#endif;如果已定义,那么#ifndef测试为假,该指示和#endif指示间的代码都被忽略.

#ifndef、#define、#endif作用相关推荐

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

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

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

    目录 #ifndef, #define, #endif 作用 #ifndef #ifdef #define #ifndef, #define, #endif 作用 #ifndef 它是if not d ...

  3. C++ ifndef /define/ endif 作用和用法

    ifndef/define/endif"主要目的是防止头文件的重复包含和编译 比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个C文件要一同编译成一个可运行文件 ...

  4. C++ 头文件 #ifndef #define #endif 作用及用法

    为什么要加定义 头件的中的#ifndef,这是一个很关键的东西.比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声 ...

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

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

  6. #ifndef #define #endif的作用

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

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

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

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

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

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

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

  10. #ifndef/#define/#endif使用详解

    https://blog.csdn.net/abc5382334/article/details/18052757 想必很多人都看过"头文件中的 #ifndef/#define/#endif ...

最新文章

  1. redis 主从配置_应用 | Redis实现 主从,单例,集群,哨兵,配置应用
  2. 计算机网络对科学发展有什么影响,计算机技术对社会发展的影响
  3. python123第三章作业答案_swift playground类似的游戏
  4. java linux 权限管理_权限管理java实现(源于Linux中的权限管理算法)
  5. 使用ASP.NET Core 3.x 构建 RESTful API - 2. 什么是RESTful API
  6. C++primer拾遗(第八章:IO库)
  7. 用指针交换两个数_C语言100题集合026-使用指针交换两个数组中的最大值
  8. 使用nginx做反代时遇到413 Request Entity Too Large的解决方法
  9. 算法设计与分析第六章习题解答与学习指导(第2版)屈婉婷 刘田 张立昂 王捍贫编著 清华大学出版社
  10. 记各常见手机屏幕尺寸
  11. Vue的diff算法原理是什么?
  12. 联动报警系统服务器,火灾自动报警系统的维护,该如何应对?
  13. 一周企业财报 | 汉高、中通、格林酒店、宜人金科、宝尊、维他奶等7家企业发布业绩...
  14. vue 中 vue-print-nb 表格打印不全的问题
  15. Android 360度全景图片 源码
  16. js前置递增和后置递增
  17. Oracle Database-PL/SQL
  18. Coinbase眼中的侧链和layer2解决方案
  19. Harris Corner
  20. 我是如何看Vue源码的

热门文章

  1. 计算机术语横幅迎新,迎新横幅的标语(精选50句)
  2. java隐藏jframe_通过setVisible隐藏/显示的JFrame的窗口事件?
  3. 松下MCA H1具体应用模式
  4. MYSQL无法登陆问题
  5. 网易云音乐工程师,亲自揭晓评论实现技术(二)| 技术头条
  6. 淘宝封我账号店铺2个月了, 都没退保证金货款给我,商品客户早就确认了,聚投诉投诉淘宝,但是没人处理
  7. 教你如何选择液晶显示器
  8. cxfreeze打包python2.7为exe可执行程序
  9. php168源码讲解,hph168 - WEB源码|源代码 - 源码中国
  10. Android 魅族等SmartBar适配