文档章节

头文件重复引用

 野渡书生
发布于 2016/04/21 14:40
字数 224
阅读 37
收藏 0

Q:.h头文件中的ifndef/define/endif 的作用? 

 A:防止该头文件被重复引用。

 说明:

有些头文件重复包含只是增加了编译工作的工作量,不会引起太大的问题,仅仅是编译效率低一些。

有的会引起错误,比如在头文件中定义了全局变量(虽然这种方式不被推荐,但确实是C规范允许的) 。

如果头文件被循环包含,有的编译器会智能处理,和只include一次一样;有的会报错,有的直接死锁,导致编译程序崩溃(这个只有很低级的编译器才会出现在几乎看不到了)。

不管怎样,用ifnde xxx #define xxx或者其他方式避免头文件重复包含,只有好处没有坏处,是一个很好的习惯

© 著作权归作者所有

上一篇: 多态
下一篇: vector容器
粉丝 9
博文 217
码字总数 158821
作品 0
南京
私信 提问
@class #import #include辨析·

#include 区分 #include <x.h>与#include "x.h"的作用 #include <x.h>:它用于对系统自带的头文件的引用,编译器会在系统文件目录下去查找该文件. #include "x.h":用户自定义的文件用双引号引......

HelloSwift
2016/08/08
3
0
关于C语言项目工程文件目录组织结构

2011年12月29日 经常会在对源代码进行如何组织时犯难: 1)头文件的内容应写些什么? 2)函数的具体实现应放在哪个文件里?是否与头文件放在一处? 3)自定义的头文件(.h)与定义函数(.c)...

01010101010101010101
2014/01/03
1K
0
@class以及#include和#import的区别

#import 大部分功能和#include是一样的,但是他处理了重复引用的问题,我们在引用文件的时候不用再去自己进行重复引用处理. #include <>直接去编译路径下找 #include "" 源文件-》系统路径-...

KevinEmily
2016/06/23
30
0
extern “C”的作用详解

extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数...

天王盖地虎626
01/25
13
0
php之include的使用

服务器端包含 (SSI) 用于创建可在多个页面重复使用的函数、页眉、页脚或元素。 PHP include 和 require 语句 在 PHP 中,您能够在服务器执行 PHP 文件之前把该文件插入另一个 PHP 文件中。 ...

wbf961127
2017/11/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

将key=value转成对象形式

var params = {};testParan.split(',').forEach(item =>{ var tmpArr = item.split('='); Vue.set(params, tmpArr[0].trim(), tmpArr[1].trim());});Vue.set(params, 'sql', sql);......

沉迷代码我爱学习
19分钟前
3
0
什么是分立器件

  分立器件被广泛应用到消费电子、计算机及外设、网络通信,汽车电子、led显示屏等领域。   半导体产业中有两大分支:集成电路和分立器件。   集成电路   集成电路(integrated circ...

仙溪
29分钟前
4
0
kibana rpm安装

https://www.elastic.co/guide/en/kibana/6.2/rpm.html 下载对应的版本wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-x86_64.rpm 安装 rpm -ivh kibana-6.2.4-x86_64......

看的最远的地方
32分钟前
3
0
高防CDN相比较于高防服务器,为何更加稳定?

对于DDoS攻击,那些已经做过网站、平台的人应该知道,DDoS攻击是非常可怕的,因为这种攻击本质上不能防御,或者DDoS攻击只能被减轻,不能完全消除。DDoS,意思是“分布式拒绝服务”。它是一种...

云漫网络Ruan
33分钟前
4
0
线程SuspendThread() ResumeThread()的使用

SuspendThread():挂起线程 If the function succeeds, the return value is the thread's previous suspend count; otherwise, it is (DWORD) -1. ResumeThread():启动线程 If the functio......

rainbowcode
33分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部