防止头文件重复包含的宏想必大家都清楚,#ifndef#define#endif就是干这个用的,面试中也考过。我也是知道这个宏的作用,今天我们就来实战测试一下,网上说的那是别人的东西,只有自己测试过出结果的才是自己的东西。

[xxx@localhost test]$ ls
a.h  test.c  test.h
[xxx@localhost test]$ cat a.h
#ifndef A_H
#define A_Hint a=1;#endif
[xxx@localhost test]$ cat test.h
#ifndef TEST_H
#define TEST_H#include"a.h"
void func(int a);#endif
[xxx@localhost test]$ cat test.c
#include<stdio.h>
#include"test.h"
#include"a.h"int main()
{func(a);return 0;
}void func(int a)
{a++;printf("a=%d\n",a);
}
[xxx@localhost test]$

#ifndef#define#endif是被用在.h文件中不是.c文件中。test.h包含了a.h ,test.c同时包含了test.h和a.h,那test.c包含了2个a.h,即被重复包含了,这时候就要加上宏。最好2个头文件都要加,正常来说每个头文件都要加上这个宏防止被重复包含。

防止头文件的重复包含相关推荐

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

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

  2. C语言头文件避免重复包含

    C语言头文件避免重复包含 假定有以下几个头文件及其包含关系为: File1.h,file2.h,file3.h,file4.h,file5.h,main.cpp 那么:file3.h包含file1.h ...

  3. 如何防止头文件被重复包含或引用?

    一.#pragma once ( 比较常用) 只要在头文件的最开始加入这条指令就能够保证头文件被编译一次,这条指令实际上在VC6中就已经有了,但是考虑到兼容性并没有太多的使用. #pragmaonce ...

  4. 如何防止头文件被重复包含、嵌套包含

    [转自] http://hi.baidu.com/zengzhaonong/blog/item/8a8871062d481f7f03088106.html #include文件的一个不利之处在于一个头 ...

  5. 如何避免头文件被重复包含?

    在实际的工程中我们很有可能重复包含某一个头文件,比如下面这种情况: 开发人员B和开发人员C在自己的头文件中都包含了开发人员A的头文件,而开发人员D在自己的编译单元中包含了B和C的头文件,此时D就相当于 ...

  6. #ifndef #define #endif ”防止头文件被重复包 .

    #include文件的一个不利之处在于一个头文件可能会被多次包含,为了说明这种错误,考虑下面的代码: #include "x.h" #include "x.h" ...

  7. C/C++开发中防止头文件被重复引入的3种方法

    我们在用 C 语言开发软件时,经常使用宏定义(#ifndef / #define / #endif)来有效避免头文件被重复 #include,此方式在 C++ 多文件编程中也很常用.    举个例子, ...

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

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

  9. C语言头文件.h互相包含所引发的一系列错误C2143之类的解决方法

    本文可解决的问题: 在一个头文件.h中定义一个结构体,在另一个.h文件中使用这个结构体引发错误 C2143    语法错误: 缺少")"(在"*"的前面) (编 ...

最新文章

  1. 阿里云服务器如何加强服务器的安全?有哪些安全措施?
  2. Tomcat【环境搭建 02】Web端403 Access Denied You are not authorized to view this page解决方法(Tomcat 10.2.12 版本)
  3. ios oc数组转换为c语言数组,iOS中将数组作为参数传递给服务器
  4. x264 n-th pass编码时候Stats文件的含义
  5. 高压电是以交流,还是直流方式输送?
  6. Windows2003 安装MVC4 环境的步骤
  7. 剑指offer——面试题8:旋转数组的最小数字
  8. 每日三道前端面试题--vue 第四弹
  9. Linux配置防火墙,开启80端口、3306端口
  10. 常用的oracle学习网站
  11. 毕设-基于SSM高校后勤管理系统
  12. element ui中el-image不显示图片
  13. MySQL字符串拼接、分组拼接字符串
  14. 华硕bios更改固态硬盘启动_华硕主板BIOS设置固态硬盘启动顺序为第一启动硬盘教程...
  15. 计算机网络中ip子网的划分,计算机网络学习笔记(十二)IP 子网划分
  16. HMM隐马尔可夫模型-通俗易懂
  17. 实用工具(锐捷睿易篇)
  18. oracle批量备份表的存储过程
  19. 计算机公式与函数的定义及两者的关系,excel(公式与函数).ppt
  20. ANOMALY: use of REX.w is meaningless (default operand size is 64)idea无法集成git问题 已解决

热门文章

  1. 【Android FFMPEG 开发】C++ 回调 Java 方法 模板 ( JavaVM *vm | JNIEnv *env | jobject instance | 引用类型 | 模板代码示例 )
  2. .Net软件测试化之道 [James D.MCCaffrey]
  3. HDU 4638 Group(莫队)题解
  4. 利用 PortableBasemapServer 发布地图服务
  5. js中iframe访问父页的方法
  6. U盘无法安装win10提示Your PC/Device needs to be repaired
  7. MYsql优化where子句
  8. DedeCms如何调用Discuz论坛主题等数据方法总结
  9. Delphi CxGrid 汇总(3)
  10. 设计model层的理念和思路