C++ - #include"filename"

Sim*_*ity 1 c++ include

本教程中,它提到了以下内容#include "filename":

#include"filename"告诉编译器在包含执行#include的源文件的目录中查找文件.如果失败,它将与有角度的托架案件完全相同.

粗体字体句子是什么意思?

谢谢.

pax*_*blo 10

粗体位只是意味着,如果使用该"方法无法定位引号内指定的文件,它将恢复为该<>方法.


我应该提一下,关于它查找include文件的位置实际上是不正确的.在两种情况下(引号和尖括号),搜索位置都是实现定义的.

lex.header部分:

两种形式的头名称中的序列以实现定义的方式映射到头部或外部源文件名,如16.2中所指定.

16.2部分如下:


#include指示字应识别能够由实现待处理的报头或源文件.

表单的预处理指令

# include < h-char-sequence> new-line
Run Code Online (Sandbox Code Playgroud)

搜索一系列实现定义的位置,以查找由<>分隔符之间的指定序列唯一标识的标头,并使标头的整个内容替换该指令.如何指定场所或标识的头是实现定义的.

表单的预处理指令

# include " q-char-sequence" new-line
Run Code Online (Sandbox Code Playgroud)

导致由"分隔符之间的指定序列标识的源文件的全部内容替换该指令.以实现定义的方式搜索指定的源文件.如果不支持此搜索,或者搜索失败,则会重新处理该指令,就像它读取一样

# include < h-char-sequence> new-line
Run Code Online (Sandbox Code Playgroud)

使用>原始指令中相同的包含序列(包括字符,如果有的话).


所以陈述"... tells the compiler to look for the file in directory containing the source file doing the #include ..."是错误的.在两种情况下,它完全取决于它如何找到文件的实现.

话虽如此,其余的都是正确的.如果该"类型使用的方法未找到标头,则使用该<>类型使用的方法.这真的是大胆的意思.

您只需阅读特定实现的文档即可了解这些方法的用途.

  • 对于迂腐的+1,但在实践中,人们使用的大多数系统都将遵循所概述的规则.如果你想编写自己的头文件,你必须依赖于"#include"myheader.h"`将搜索当前目录的假设. (3认同)