在include指令中使用尖括号和引号有什么区别?
#包括<文件名>#包括“文件名”
在include指令中使用尖括号和引号有什么区别?
#包括<文件名>#包括“文件名”
当前回答
一般来说,区别在于预处理器搜索头文件的位置:
#include是包含头文件的预处理器指令。两个#include都用于在程序中添加或包含头文件,但首先是包含系统头文件,然后是用户定义的头文件。
#include<filename>用于在程序中包含系统库头文件,意味着C/C++预处理器将搜索存储C库文件或预定义系统头文件的文件名。#include“filename”用于在程序中包含用户定义的头文件,这意味着C/C++预处理器将在程序所在的当前目录中搜索文件名,然后遵循#include<filename>所使用的搜索路径
检查gcc-docs-gcc-include文件
其他回答
#include <abc.h>
用于包含标准库文件。因此编译器将检查标准库头所在的位置。
#include "xyz.h"
将告诉编译器包含用户定义的头文件。因此编译器将在当前文件夹或-I定义的文件夹中检查这些头文件。
有两种方法可以编写#include语句。它们是:
#include"filename"
#include<filename>
每种形式的含义是
#include"mylib.h"
该命令将查找当前目录中的文件mylib.h以及可能已设置的include搜索路径中提到的指定目录列表。
#include<mylib.h>
此命令将仅在指定的目录列表中查找文件mylib.h。
include搜索路径只是一个目录列表,可以搜索包含的文件。不同的C编译器允许您以不同的方式设置搜索路径。
它确实:
"mypath/myfile" is short for ./mypath/myfile
具有是#include所在文件的目录和/或编译器的当前工作目录,和/或default_include_path
and
<mypath/myfile> is short for <defaultincludepaths>/mypath/myfile
如果./在<default_include_paths>中,则不会有任何区别。
如果mypath/myfile位于另一个include目录中,则行为未定义。
了解的唯一方法是阅读实现的文档。
在C标准第6.10.2节第2至4段中规定:
表单的预处理指令#包含<h-char-sequence>新行在实现定义的位置序列中搜索由<和>分隔符之间的指定序列唯一标识的头,并用头的全部内容替换该指令。如何指定位置或标识标题是实现定义的。表单的预处理指令#包括“q-char-sequence”新行导致用“分隔符”之间的指定序列标识的源文件的全部内容替换该指令。将以实现定义的方式搜索命名的源文件。如果不支持此搜索,或者搜索失败,则会像读取指令一样重新处理该指令#包含<h-char-sequence>新行具有与原始文件相同的包含序列(包括>个字符,如果有)指令。表单的预处理指令#包含pp令牌新行(与前两种形式之一不匹配)。指令中include之后的预处理标记与普通文本中的处理相同。(当前定义为宏名称的每个标识符由其预处理令牌的替换列表替换。)所有替换后产生的指令应与前两种形式之一匹配。实现定义了一种方法,通过该方法,<和>预处理令牌对或一对“字符”之间的一系列预处理令牌组合成单个标头名称预处理令牌。定义:h-char:源字符集的任何成员,除了换行符和>q-char:源字符集的任何成员,除了换行符和“
#include<>用于预定义的头文件
如果头文件是预定义的,那么您只需将头文件名写在尖括号中,它看起来像这样(假设我们有一个预定义的头文件名iostream):
#include <iostream>
#include“”表示程序员定义的头文件
如果你(程序员)编写了自己的头文件,那么你会将头文件名用引号括起来。因此,假设您编写了一个名为myfile.h的头文件,那么这是如何使用include指令包含该文件的示例:
#include "myfile.h"