良许Linux教程网 干货合集 #include使用引号“”和尖括号的区别?

#include使用引号“”和尖括号的区别?

很多程序员在编写代码时,可能没有注意到一些细节问题,比如C语言中的#include语句。

首先,需要注意的是,#include是一种预处理语句。那么什么是预处理语句呢?

预处理语句最明显的特征是行首以#符号开始的一些特殊语句,例如#include、#define、#if等等。在程序的其他编译处理步骤(如词法分析、语法分析、代码生成、优化和链接等)之前,预处理器会对这些语句进行预处理操作。

在编译工具中,预处理器会检测到#include指令后,会进行一些预处理操作。

二、#include的定义

如果你在看一些C/C++教程,那么你可能会发现,有些教程涨的#include命令写作**#include ,但有时候又会出现#include **”*文件名*“****。

你会很疑惑,到底哪个是对的呢?为什么要有这两种不同的写法呢?

1.#include

系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找。

2.#include “xxx.h*“*

用户自定义的文件用双引号括起来,编译器首先会在用户目录下查找,然后在到C++安装目录(比如VC中可以指定和修改库文件查找路径,Unix和Linux中可以通过环境变量来设定)中查找,最后在系统文件中查找。

这两种写法都是正确的写法,但是它们却是有区别的。我们知道C/C++已经有一些编写好的头文件(比如标准函数库等),它们存放在VC++的Include文件夹里。当我们使用#include 命令时,编译器就到这个文件夹里去找对应的文件。显然,用这种写法去包含一个我们自己编写的头文件(不在那个Include文件夹里)就会出错了。所以包含C++提供的头文件时,应该使用尖括号。

相反地,#include “文件名”命令则是先在当前文件所在的目录搜索是否有符合的文件,如果没有再到Include文件夹里去找对应的文件。因此,无论这个文件是C++提供的还是自己编写的,使用#include “文件名”命令一定是正确的。这也正是书中本节之前的程序一律使用#include “文件名”命令的原因。

三、关于标准的尖括号

C++标准中,包含C++提供的头文件并不是写作#include ,如#include 的写法是过时的。正确的写法是#include ,并且要使用std名字空间。有些程序中会有using namespace std;就是按照这种标准书写的。名字空间也称为命名空间,主要是用来避免大型程序开发中的标志符冲突。标准还规定了如何在C++中包含C的头文件,有兴趣的读者可以到网上查阅这些资料。

image-20231210174851775
image-20231210174851775

尽管以上两种#include命令都可以正确地被VC++识别了,但是它们却并不符合C++的标准。标准规定,包含C++提供的标准头文件或系统头文件时应使用尖括号,包含自定义头文件时可使用双引号。

虽然有些文件是系统文件,但如果你工程中包含有相应文件,使用#include “xxx.h” 也不会报错(比如在Keil中使用#include “stdio.h”),但还是建议使用规范的代码。

可能复制粘贴习惯了,你都不知道究竟是 #include 还是 #include “xxx.h” 了。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部