防止头文件的重复包含
防止头文件重复包含的宏想必大家都清楚,#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个头文件都要加,正常来说每个头文件都要加上这个宏防止被重复包含。
防止头文件的重复包含相关推荐
- ifndef/define/endif——主要目的是防止头文件的重复包含和编译
原文:http://www.jb51.net/article/100939.htm 原文:https://blog.csdn.net/abc5382334/article/details/180527 ...
- C语言头文件避免重复包含
C语言头文件避免重复包含 假定有以下几个头文件及其包含关系为: File1.h,file2.h,file3.h,file4.h,file5.h,main.cpp 那么:file3.h包含file1.h ...
- 如何防止头文件被重复包含或引用?
一.#pragma once ( 比较常用) 只要在头文件的最开始加入这条指令就能够保证头文件被编译一次,这条指令实际上在VC6中就已经有了,但是考虑到兼容性并没有太多的使用. #pragmaonce ...
- 如何防止头文件被重复包含、嵌套包含
[转自] http://hi.baidu.com/zengzhaonong/blog/item/8a8871062d481f7f03088106.html #include文件的一个不利之处在于一个头 ...
- 如何避免头文件被重复包含?
在实际的工程中我们很有可能重复包含某一个头文件,比如下面这种情况: 开发人员B和开发人员C在自己的头文件中都包含了开发人员A的头文件,而开发人员D在自己的编译单元中包含了B和C的头文件,此时D就相当于 ...
- #ifndef #define #endif ”防止头文件被重复包 .
#include文件的一个不利之处在于一个头文件可能会被多次包含,为了说明这种错误,考虑下面的代码: #include "x.h" #include "x.h" ...
- C/C++开发中防止头文件被重复引入的3种方法
我们在用 C 语言开发软件时,经常使用宏定义(#ifndef / #define / #endif)来有效避免头文件被重复 #include,此方式在 C++ 多文件编程中也很常用. 举个例子, ...
- #ifndef/#define/#endif 防止该头文件被重复引用
转载自:http://blog.csdn.net/abc5382334/article/details/18052757 想必很多人都看过"头文件中的 #ifndef/#defi ...
- C语言头文件.h互相包含所引发的一系列错误C2143之类的解决方法
本文可解决的问题: 在一个头文件.h中定义一个结构体,在另一个.h文件中使用这个结构体引发错误 C2143 语法错误: 缺少")"(在"*"的前面) (编 ...
最新文章
- 阿里云服务器如何加强服务器的安全?有哪些安全措施?
- Tomcat【环境搭建 02】Web端403 Access Denied You are not authorized to view this page解决方法(Tomcat 10.2.12 版本)
- ios oc数组转换为c语言数组,iOS中将数组作为参数传递给服务器
- x264 n-th pass编码时候Stats文件的含义
- 高压电是以交流,还是直流方式输送?
- Windows2003 安装MVC4 环境的步骤
- 剑指offer——面试题8:旋转数组的最小数字
- 每日三道前端面试题--vue 第四弹
- Linux配置防火墙,开启80端口、3306端口
- 常用的oracle学习网站
- 毕设-基于SSM高校后勤管理系统
- element ui中el-image不显示图片
- MySQL字符串拼接、分组拼接字符串
- 华硕bios更改固态硬盘启动_华硕主板BIOS设置固态硬盘启动顺序为第一启动硬盘教程...
- 计算机网络中ip子网的划分,计算机网络学习笔记(十二)IP 子网划分
- HMM隐马尔可夫模型-通俗易懂
- 实用工具(锐捷睿易篇)
- oracle批量备份表的存储过程
- 计算机公式与函数的定义及两者的关系,excel(公式与函数).ppt
- ANOMALY: use of REX.w is meaningless (default operand size is 64)idea无法集成git问题 已解决
热门文章
- 【Android FFMPEG 开发】C++ 回调 Java 方法 模板 ( JavaVM *vm | JNIEnv *env | jobject instance | 引用类型 | 模板代码示例 )
- .Net软件测试化之道 [James D.MCCaffrey]
- HDU 4638 Group(莫队)题解
- 利用 PortableBasemapServer 发布地图服务
- js中iframe访问父页的方法
- U盘无法安装win10提示Your PC/Device needs to be repaired
- MYsql优化where子句
- DedeCms如何调用Discuz论坛主题等数据方法总结
- Delphi CxGrid 汇总(3)
- 设计model层的理念和思路