[c++]包含头文件意味着什么呢?
Posted AIplusX
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[c++]包含头文件意味着什么呢?相关的知识,希望对你有一定的参考价值。
写在前面
大家好哈哈,前段时间太忙了,好久没写啦,这次的话我准备写一个c++的系列,这个系列将包括c++基本语法以及STL编程的部分。
整个结果的验证都会在虚拟机下面的ubuntu1804下进行,利用g++进行编译源文件,所有程序都只将提供图片,不提供源码哦,希望大家看了之后能够自己动手敲程序,这样才能加深理解。
如果文章内容有错误,请在评论区指出,博主一定会第一时间进行检查并及时给予修正。
正文
系列第一篇我先写一些简单的,那就是头文件的包含,在cpp文件里包含头文件时候到底会发生什么呢?让我们一起来探索一下。
首先编写main.cpp文件,more指令可以查看text文本内容:
如果要查看那个文件不是text文件的话会有提示的:
言归正传,可以看到main.cpp
里面包含了include.h
这个头文件,那我们再来看看这个文件里面有什么:
好的,我们现在编译一下这个main.cpp
文件,同时保存编译的中间文件。
g++在编译的过程中会有如下的流程:
那我们来查看一下实际生成了什么东西:
跟我们上面的写的过程也是相匹配的,因为今天探索的是包含头文件意味着什么,接下来就开始实际操作吧。
main.ii
里面是编译预处理之后的结果,所以我们来查看一下main.ii
里面有什么东西:
通过查看main.ii
之后就可以看到,整个include.h
文件嵌入到了main.cpp
的开头部分,也就是说编译预处理的时候会将include.h
放到main.cpp
的开头,这就是头文件包含的意义。
这个时候我们再做一个小修改:
可以看到我在main.cpp
和include.h
里面都添加了int i(0);
这个语句,此时编译会有什么结果呢?我们来运行看一下:
可以看到,编译器报了错误,这是因为包含了include.h
文件之后,编译器识别到了有2个相同名称的变量i
,所以有了重定义的错误。
解决这个问题也比较简单,在include.h
文件里面的int i
前面加上extern
关键字就可以啦。
养成好习惯,头文件里面放声明,实现文件里面放定义。
以上是关于[c++]包含头文件意味着什么呢?的主要内容,如果未能解决你的问题,请参考以下文章