C++语言零基础入门教程:2.2 C/C++头文件大揭秘,""和<>有什么区别

 在《C++语言零基础入门教程:2.1 最简单的C++语言控制台程序》,我给出了输出“中秋”两个汉字的代码,那么这节课来给大家解释一下。因为是零基础入门的,虽然看似很简单,简单到不足挂齿的地步,不过对于没学过的人来说,还是值得一讲的。
    程序的代码结构是这样的:包含一个头文件,引用标准命名空间,编写main函数,在main函数中输出一大堆字符,字符为空格和2的混合,因为空格是不可见的,字符2是可见的,所以,就看到了特定排列的中秋的打字样哦。
    如果你对此解释不满意,或者听不懂,那就继续看下面的详细解释。虽然说是详细,不过只是对本代码的大概介绍,具体的知识,将会在各章节详细讲解的。
    对了,如果你还没有建立项目,没有运行代码,请先完成一下,不然不要厚着脸皮看本节哦。很鄙视不动手学习编程的人,对于不懂而且还懒的人,更是鄙视。如果你是高手,自然也不会学习这个课程,如果熟悉,也请动手练习一下,这是学习的态度问题。

    1.包含头文件
    代码是:

#include <iostream>

     这是C++语言的头文件,C语言的是:

#include <stdio.h>

     如果你没学过C语言,也就不会觉得郁闷,为什么这个头文件没有.h。不过,不管怎么样,没学过C语言的同学,也是需要知道stdio.h是和iostream差不多的声明头文件哦。只是文件名不一样。
    下面来看看为什么C++的标准输入输出头文件没有.h吧。那么我们需要知道#include的语法咯。
    #include 后面跟着的是一个文件的路径。对,就是路径。说到路径,你肯定会想到D:\1.txt这样的表示,其实,是可以的。后面就是一个文本文件的路径而已。
    而这个路径代表的文件,可以是任何后缀,甚至是没有后缀的。比如.h,比如这里的iostream,直接没有后缀。对于一个文件,并不是以后缀来确定文件类型的哦,不清楚可以看《你必须知道的程序那些事:扩展名和格式的区别》。
    真正重要的的是这个文件路径对应的文件的内容。所以,你也就不必奇怪,为什么iostream不需要.h了。实际上,还有更有趣的事情。
    在VS中,一般都可以查看头文件的内容。右击#include 后的头文件,然后点击【打开文档“iostream”】,然后你就可以看到这个头文件的所有内容,其实就是一些文字。如下图所示:

    


    其实这些头文件都是文本文件,和txt文件一个性质。那么你可以将这些内容复制,然后创建一个新txt文件到D盘,然后粘贴刚才复制的头文件的内容到txt文件中,然后保存文件名称为1.txt。然后你将:

#include <iostream>

   替换为

#include "D:/1.txt"

     然后再运行上一节的程序,还是可以正常显示结果,对不对?一定要动手做一下,这样感受才深刻。这样感觉是不是一下子觉得头文件好像和一些书上讲的不一样呢?哈哈哈,那些书上没有讲语法之外的东西,所以,总是感觉头文件很神秘。希望我们课程可以给你别有一番风味的学习感觉,让你学习的更加有兴趣,也会的更加深入哦。
    那么#include是什么呢?#开头表示紧接的一行内容是预编译指令,就是在文本字符写的代码被编译成二进制代码之前被预编译器(就是一个程序)编译的。其实说白了,预编译器提前将这些指令执行之后,然后将后面的文件的内容导入到这个cpp文件中。这个过程就相当于你把那个头文件的内容复制,然后替换掉这个include指令。这就是include预编译指令的作用。
    那么后面的""和<>又是什么区别呢?
    那么这个就要说一下相对路径和绝对路径了。刚才说的【D:/1.txt】这样的,从分区(也叫作驱动器)最上层,也就是根目录开始的一直到文件名的整个形成的路径,就是绝对路径。而只写一个文件名,就是相对于当前cpp文件的位置,比如当前cpp为m.cpp,在【D:/Console_1/】下,那么当前文件的绝对路径为:【D:/Console_1/m.cpp】,那么#include "1.h"这个头文件相对于当前文件的位置,就是和m.cpp一个文件夹下,那么这个头文件的绝对路径就是:【D:/Console_1/1.h】。
    这里涉及到.和..两个路径,.表示当前文件夹,这里就是相对于m.cpp的说的当前文件夹,就是【D:/Console_1/】了,就是m.cpp文件所在的文件夹。..就是上一级文件夹,这里指的就是m.cpp所在文件夹的上一层文件夹,那就是【D:/】这个文件夹了。
    知道了相对路径和绝对路径后,那么在看include 后面的""和<>。如果你在""和<>中写的是绝对路径,则两个都没有区别。因为这两个是指的搜索头文件的方式。
    ""是指从当前文件夹开始搜索,如果当前文件夹搜索不到,然后就到指定的包含目录,再到系统文件夹去搜索,等等。具体的路线你可以去探究下。
    <>是指从系统目录开始搜索,最后到当前文件所在的目录搜索。目录就是文件夹,两种叫法而已。
    ""和<>的区别就是搜索的开始位置和顺序不一样,其实是相反的。那么我们怎么使用最好呢?根据他们的特点,我们选用合适的,实际上就是考虑搜索的效率,也就是最快找到的方式就是最好的。不过最后都可以找到头文件,除非头文件不存在。如果是你自己写的头文件一般是放在项目里的,所以,自然使用""从当前文件夹搜索最快,因为就是在同一个文件夹里。如果是系统提供的或者开发库提供的头文件,自然使用<>比较好。其他开发库提供的头文件,其实就是系统环境记录的路径咯。
    如果你想单独建立一个文件夹作为头文件存放的位置,要么你可以直接使用绝对路径包含。使用绝对路径可以无视""和<>,任选一种,因为是绝对路径不需要查找,直接就可以定位到。这个可以让你方便的管理你的头文件。
    如果不想在包含预编译指令里写这么长的路径,而又想放在自定义的目录中,那么就利用VS的包含目录设置。这样,就可以让预编译器去找了。方法:VS主菜单“项目”->“XXX属性”->“VC++目录”->“包含目录”,然后在下拉框中选择编辑,添加你存放头文件的文件夹的路径即可。
    如果不想使用这种方法,那么你可以使用相对路径哦,这个就留给你来练习啦。提示,写法如#include "../head/1.h"这一课是不是对头文件摸了个透呀。记得动手哦。
    最后还是留代码给大家,可以不用一个个敲,先试试这些效果吧。代码如下:

#include "1.txt" 
// - 文件放在D盘哦,你自己复制iostream文件的内容保存到1.txt中 
// - 使用包含目录或者直接使用相对路径 
using namespace std; 
void main() 
{ 
    cout << "神奇的头文件哦,条条大路通罗马,就看你搞懂没!" << endl; 
}


转载于:https://www.cnblogs.com/Anzhongliu/p/6091842.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值