c++ #include是怎么样工作的?

2016-02-19 11:54 3 1 收藏

图老师设计创意栏目是一个分享最好最实用的教程的社区,我们拥有最用心的各种教程,今天就给大家分享c++ #include是怎么样工作的?的教程,热爱PS的朋友们快点看过来吧!

【 tulaoshi.com - 编程语言 】

可能不太熟悉,也有可能没有去关心过。我们只关心程序能否正确运行,或者程序怎么实现等等一些问题。

这里笔者就为介绍下我们熟悉又不太熟悉的“#include”,首先我们了解下C/C++头文件。

头文件为相关声明提供了一个集中存在的位置。头文件一般包含类的定义,extern变量声明与函数声明。注意这里声明与定义的区别:它们最本质的区别是定义只可以出现一次,声明可以出现多次。声明不分配空间,而定义是要分配空间的。头文件正确使用可以保证所有文件使用给定实体的同一声明;当声明需要修改时,只有头文件需要更新。

头文件还可以定义:在编译的时候就已知道其值的cosnt对象和inline 函数。在头文件中定义上述实体,是因为编译器需要它们的定义来产生代码。例如:为了产生能定义或使用类的对象代码,编译器需要知道组成该类型的数据成员,也需要知道对应的函数。

在C++中,有些地方需要放置常量表达式。例如:枚举成员的初始化必须是常量表达式。常量表达式是编译器在编译时就能够在计算出结果的表达式。当const整型变量通过常量表达式自我初始化时,这个const整型变量就可能是常量表达式。而const变量要成为常量表达式,初始化必须为编译器可见。为了能够让多个文件使用相同的常量值,const变量和它的初始化必须是每个文件都可见的。所以将其定义放到头文件中,无论const常量何时使用,编译器都能知道其初始化。

#include是怎么样工作的?

#include设施是C++预处理器的一部分。

预处理器处理程序的源代码,是在编译器之前运行。

#include只接受一个参数:头文件名。

预处理器用指定的头文件的内容替代每个include。

我们自己的头文件存储在文件中。系统的头文件可能用特定于编译器的更高效的格式保存。

头文件经常#include其他头文件。头文件定义的实体经常使用在其他文件的设施。所以设计的头文件时,应使其可以多次包含在同一源文件中。我们必须保证包含同一头文件不会引起该头文件定义的类和对象被多次定义。使得头文件安全的通过做法,使用预处理器定义头文件保护符。

什么是头文件保护符?

看看下面内容大家就会明白了

在编写头文件之前,我们需要引入一些额外的预处理器设施。预处理器允许我们自定义变量。为了避免名字冲突,预处理器变量经常用全大写字母表示。预处理变量有两种状态:已定义或未定义。
代码如下:

#ifndef BEGEIN_H

#define BEGEIN_H

//定义一些类或者定义函数
#endif


如果没有两个头文件定义和使用相同的预处理器变量,那么就没有问题。如果出现上述情况,可以用定义在头文件里实体类来命名预处理器变量来避免预处理变量重名问题。

#include 与#include " "区别
如果头文件名在中,就会被认为是标准头文件。编译器会在预定义的位置查找该头文件,如果是""就认为它是非系统头文件,非系统文件查找通常开始于源文件所在路径。

来源:https://www.tulaoshi.com/n/20160219/1599057.html

延伸阅读
受孕过程是怎样的 男女性交后精液积存在阴道内,精液内有大量的精子,精子的存活时间约为72小时,活动的精子通过子宫到输卵管壶腹部与卵子相遇、受精,受精卵再经输卵管输送到子宫腔内,并在宫腔内遨游2~3天,寻找合适的落脚点,然后着床,在子宫腔内生长发育直至足月分娩。以下是受孕过程中不可缺少的过程。 1、男子的睾...
一、绪论 当微软推出VS.NET7实现了可扩展的托管C++后,C++程序员们反映不一。尽管大部分的程序员对于能够继续使用C++感到很欣慰,但几乎所有的人对于托管C++提供的晦涩语法感到很痛苦。微软明显从反馈中感觉到托管C++不是那么成功。 2003年10月6日,ECMA(欧洲计算机制造商协会)宣布成立专家组,负责结合ISO标准C++与通用语言,开发一个可...
    富有活力的语言需要不断改变和成长,C++也不例外。在本文中,Bjarne Stroustrup提出了自己对C++的设计和演化的看法。 !-- frame contents -- !-- /frame contents -- 为了让编译器、工具和类库实现者跟上节奏,让用户吸收标准C++所支持的编程技术,在早有预计的、沉寂了几年之后,委员会再次考虑...
标签: 计算机语言
要点1: 很多C++程序员还在使用而不是用更新的标准的库。这两者都有什么不同呢?首先,5年前我们就开始反对把.h符号继续用在标准的头文件中。继续使用过时的规则可不是个好的方法。从功能性的角度来讲,包含了一系列模板化的I/O类,相反地只仅仅是支持字符流。另外,输入输出流的C++标准规范接口在一些微妙的细节上都已改进,因此,和在接...
标签: 婴儿
婴儿的视力是怎么样的 tulaoShi.com        婴儿初到人间,对光已有感觉,几天后,就能分辨光明与黑暗,而且婴儿喜欢注视光亮、鲜明的东西。2-3个月,婴儿视觉就相对比较集中了,可随着物体移动,特别喜欢看人的脸,注视人脸的时间比注视物体的时间长。     ...

经验教程

956

收藏

25
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部