C++ 他们所说的“是什么意思?”;然后在quote目录中";?

C++ 他们所说的“是什么意思?”;然后在quote目录中";?,c++,c,include-path,C++,C,Include Path,在第8页中,我们有以下声明: #包括“文件” 此变体用于您自己的头文件 节目。它首先在目录中搜索名为file的文件 包含当前文件,然后在quote目录中然后 与使用的目录相同。您可以将目录前置到 带有'-iNote'选项的报价目录列表 “then in the quote directories”是什么意思?gcc接受几种描述包含目录的命令行参数: -I-在#包含表单的情况下搜索,如果其他方法失败,则在#包含“文件”表单 -iNote-如果目录中未找到包含文件的文件,则仅在#include“fi

在第8页中,我们有以下声明:

#包括“文件”

此变体用于您自己的头文件 节目。它首先在目录中搜索名为
file
的文件 包含当前文件,然后在quote目录中然后 与
使用的目录相同。您可以将目录前置到 带有
'-iNote'
选项的报价目录列表


“then in the quote directories”是什么意思?

gcc接受几种描述包含目录的命令行参数:

-I
-在
#包含
表单的情况下搜索,如果其他方法失败,则在
#包含“文件”
表单


-iNote
-如果目录中未找到包含文件的文件,则仅在
#include“file”
表单的情况下搜索。它定义了这些“报价目录”。

文档中说:

您可以使用“-iNote”选项将目录前置到报价目录列表中

因此,“quote目录”是那些使用“-iNote”选项1作为参数传递的目录。该选项的文档说明:

-伊库特酒店

搜索目录仅搜索使用“#include”file”请求的头文件;首先,它们不会被搜索到“#include” 在标准系统之前由-I指定的目录 目录。如果dir以“=”开头,则“=”将替换为 系统根前缀;请参见--sysroot和-isysroot


1从理论上讲,是来自其他来源。我不知道quote Dir的任何其他文件来源;似乎没有记录默认列表。我假设默认情况下列表为空。

C标准规定:

6.10.2源文件包含
约束
#include
指令应标识可由实现处理的头文件或源文件。
语义
表单的预处理指令

# include <h-char-sequence> new-line
# include "q-char-sequence" new-line
导致将该指令替换为源文件的全部内容,源文件的全部内容由
分隔符之间的指定序列标识。将以实现定义的方式搜索命名的源文件。如果不支持此搜索,或者如果搜索失败,则将重新处理该指令,如同它已读取一样

# include <h-char-sequence> new-line
#包括新行
具有与原始指令相同的包含序列(包括
字符,如果有)

总之,quote目录是在搜索标准包含路径中的目录之前,以实现定义的方式搜索的目录。

根据我的经验,“quote目录“不是一个标准术语。相反,这似乎是对那些通过
#include
的引号形式而不是尖括号形式搜索的目录的特别描述。它可能来自用于指定可在其中找到标题的目录的命令行选项(在链接文档的第63-64页中介绍)

  • -I dir
    认为“包含目录”
    dir
    被添加到搜索所有
    #include
    指令的目录列表中
  • -isystem dir
    认为“系统包含目录”<代码>目录添加到带有系统标题的目录列表(前面)。(这些标题传统上使用角括号形式的
    #include
    ,但这不是一个要求。)由于系统标题的目录由两种形式的
    #include
    搜索,因此此选项与
    -I
    基本上是冗余的(或者可能
    -I
    应该被视为基本冗余)
  • -iNote目录
    认为“引用包含目录”
    dir
    被添加到(最初为空)目录列表中,以搜索用
    #include
    的引号形式指定的标题。(这些标题通常是您编写的,但不强制执行。)不会在这些目录中搜索尖括号版本

因此,“报价目录”是指
#include
报价表单的标题所在的目录,而不是尖括号表单。通常,不需要这种精度级别,而
-I
选项就足够了。(因此不需要“报价目录”的标准术语)

报价目录是用
-iNote
明确指定的目录。没有默认的引用目录。fwiw第2.3节中以“f您需要对搜索路径进行单独控制…”开头的段落可能会对使用的术语有所帮助。我认为第一个引用在解释什么是“引用目录列表”方面没有说服力,因为在列表之前必须先有一个列表。但我想这是太过挑剔了。尽管如此,它还是让我产生了一个小小的疑问,即当没有任何东西通过
-iNote
@eerorika传递时,列表中是否也有一些东西。我删除了我的评论,因为我对此表示怀疑。@idclev463035818这基本上就是我所想的。@idclev463035818空列表仍然是一个列表,可以预先设置它。当该选项被多次使用时,了解列表元素的顺序很重要,我认为这就是文档所说的原因。默认报价目录的可能性似乎既没有列出,也没有明确表示为不存在。不要忘记
-isystem
开关。还有相关的
--sysroot