C++ 如何定义头文件?为何要用到ifndef和#define,#endif?有何用
//b.h文件
#include "a.h"
//c.h文件
#include "a.h"
#include "b.h"
在c.h文件中,a.h文件被包含了两次.而C++规定在同一文件中只能将同一个头文件包含一次.#ifndef,#define,#endif可以避免多次包含同一头文件.
//新的c.h文件
#ifndef C_H_H
#define C_H_H
#include "a.h"
#include "b.h"
...
#endif
编译器连接c.h文件时,第一次遇到a.h文件,名称C_H_H还没有被定义,编译器将查看#ifndef和#endif之间的内容.如果在同一文件中遇到其他包含a.h的代码,编译器将知道C_H_H名称已经被定义了,从而忽略其中的内容.
假如头文件文件名为head.h,则在头文件开头一般会定义:
#ifndef HEAD_H
#define HEAD_H
文件末尾添加
#endif
头文件可以通过#include"head.h"来包含,编译器预处理时,将该文件在此处展开。如果没有使用#ifndef、#define、#endif,程序有可能出现重复包含的可能。通过简单的预处理命令,可以有效的接触重复包含的问题,同时降低了编译器的负担,提高了编译效率。
#include // 系统库文件
#include "XXXXX.h" // 系统库文件,或自定义头文件
或者:
#include
#include "XXXXX"
useing using namespace std;
用ifndef和#define,#endif的目的是为了防止某个文件被多次#include。
以上答案是基于VC做出的。
相关内容
- VC++中 如何调用已经关闭的对话框的成员变量?1个答案-提问时间:2013-09-15转VC对话框的关闭按
- linux环境 C语言 getline()函数问题[图文]在c语言环境下实现C++中的getline函数即在c
- 了解爱迪尔在三角形ABC中,abc分别是内角ABC的对边,且2asinA=(2b+c)sinB+(2c+b)sinC第1个回答:mmnnmn13572010-07-06TA获得
- 突然钓鱼岛C++建一队列(链式存储结构)实现队列中元素的出队列,新元素入队列及取队头元素第1个回答:风暴头脑2016-03-15TA获得超过260个
- 怎么讲深海里的星星C++如何修改已经输出到屏幕的文字(cout)第1个回答:tattackor2017-09-27TA获得超
- 有了解bilibili求增三和弦C+,D+,E+,F+,G+,A+,B+和减三和弦C-,D-,E-,F-,G-,A-,B-,和弦的组成音跟和弦按法。第1个回答:d绝缘2011-03-17关注增和弦:CE#GD
- 该怎么一线若a.b.c.d均是非零实数,且c.d是方程x^2+ax+b=0的两根,a.b是方程x^2+cx+d=0的两根,则a+b+c+d=?第1个回答:百度网友c359f642009-03-24TA获
- 急哪里能下载到潘嘉杰《易学C++》电子书?在学习C++之前自己下载了不少书籍,自己没有什么定力,总喜欢