#ifndef都是一种宏定义判断,作用是防止多重定义

#ifndef是if not define的简写。

一般的使用场景为:
1)、头文件中使用,防止头文件被多重调用
2)、作为测试使用,省去注释代码的麻烦
3)、作为不同角色或者场景的判断使用。

头文件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。

还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个。一般格式是这样的:
#ifndef <标识>

#define <标识> …

#endif

#ifndef的详细意思相关推荐

  1. esp8266时钟_ESP8266(Non-OS SDK) 驱动 waveshare 2.9 寸墨水屏(二)- 程序移植、修改与测试

    开始移植 上一篇文章简单介绍了了墨水屏原理.例程代码以及移植工作的可行性.这一步的目的是把前面在 STM32 跑的程序,完整地搬到 esp8266 上,达到相同的运行显示效果,Let's get st ...

  2. linux的c文件报错for,linux c 编译错误 conflicting types for 的解决办法

    程序在Windows下运行是OK的,但是放在linux系统gcc编译就会报错. 报错如下: tongxunlu.c:6:1: error: unknown type name 'linkman' li ...

  3. #ifdef和#ifndef的用法—详细解答

    举一个使用 #ifdef 和 #ifndef 的例子: #ifndef MY_HEADER_H #define MY_HEADER_H// 这里是头文件的内容#endif 这个例子中,#ifndef ...

  4. Qt实现 指针式时钟+动态时钟 (详细注释)

    先上效果图: 点击运行后首先是一个指针式时钟窗口,点击Digital Clock->可以跳转到数字时钟窗口,再点击Move Clock->可以还原为指针式时钟窗口 关于整个程序的讲解都在代 ...

  5. TitanDB GC详细实现原理 及其 引入的问题

    文章目录 1. 为什么要有GC 2. GC的触发条件 3. GC的核心逻辑 1. blob file形态 2. GC Prepare 3. GC pick file 4. GC run 4. GC 引 ...

  6. C++ STL: 超详细 容器 deque 以及 适配器queue 和 stack 源码分析

    文章目录 前言 deque 实现 deque类 _Deque_iterator 类 deque 的元素插入 insert函数 deque如何模拟空间连续 queue 实现 stack 的实现 前言 C ...

  7. C语言 #ifndef 引起的redefinition of xxx 问题解决

    问题如下 多个.c和.h文件 其中cloth.h分布被hat.h和paths.h包含,编译时出现如下问题: error: redefinition of struct _Cloth 我的cloth.h ...

  8. DirectX下 Viewing Frustum 的详细实现

    本文大部分内容翻译自Gil Gribb和Klaus Hartmann合写的<Fast Extraction of Viewing Frustum Planes from the World-Vi ...

  9. lk启动流程详细分析

    转载请注明来源:cuixiaolei的技术博客 这篇文章是lk启动流程分析(以高通为例),将会详细介绍下面的内容: 1).正常开机引导流程 2).recovery引导流程 3).fastboot引导流 ...

最新文章

  1. 第一个程序实现登录功能,密码输错三次封账号。
  2. 2018/7/10-纪中某C组题【jzoj3792,jzoj3793,jzoj3794】
  3. C 结构体嵌套一级指针 二级指针 动态分配内存
  4. HDOJ 2037:今年暑假不AC_大二写
  5. python文件输入符_python读入文件时加r的作用?
  6. AI队列长度检测:使用Keras进行对象检测
  7. vfp生成菜单时文件不存在_如何在VFP项目中创建菜单
  8. php 日期 星期_php日期如何转星期
  9. 数组中的奇数排在偶数组前面
  10. 阶段3 2.Spring_10.Spring中事务控制_10spring编程式事务控制2-了解
  11. 计算机一级一分钟要打多少字,打字速度分几个等级,一分钟打多少个字算较快?...
  12. hosts – 如何默认使用记事本打开hosts文件或快捷方式
  13. 超几何分布与二项分布及其期望
  14. 火狐浏览器不兼容event问题
  15. Centos安装RabbitMQ超详细(必须收藏)
  16. 直播预告 | openGauss自治运维能力的技术演进分享
  17. 任何人都能看得懂的网络协议之 ARP
  18. 打印机键入传真服务器位置,打印机在打印时,出现 选择传真调制解调器或服务器,是为什么?...
  19. Java框架 SpringMVC介绍及入门案例
  20. SQL进阶之集合运算

热门文章

  1. XAMPP打开MySQL报错Port 3306 in use by ... MySQL
  2. 12-Azido-1-dodecanol,57395-51-4,12-叠氮-1-十二醇点击化学试剂结构式分析
  3. Matlab绘制Sigmod、Tanh、ReLU
  4. IntelliJ IDEA 必知技巧(持续更新)
  5. LFSR和PRBS是什么关系?prbs怎么产生?
  6. 2021年美容师(高级)考试及美容师(高级)最新解析
  7. MVG读书笔记——射影几何下的二次曲线
  8. 基于stm32的智能婴儿床(毕业设计)
  9. 快速关闭SELinux
  10. vue-pdf打印出现方字块乱码问题