C++ 之间的差异<;iostream>;及;iostream“;(引用)在#包括?
可能重复:C++ 之间的差异<;iostream>;及;iostream“;(引用)在#包括?,c++,syntax,C++,Syntax,可能重复: 当我编写程序时,我包括了像#include这样的库。但是,#include“iostream”也是正确的,并且编译代码时不会出现任何错误或问题 因此,我想知道和“之间的区别是什么?只查找编译器提供的头文件,而“”首先查找项目目录,如果没有头文件,则只查找编译器提供的头文件 在源文件旁边添加一个名为iostream的文件。现在使用“”包含并观察它失败(因为它将获得空文件)或使用并观察它成功(因为它将忽略本地文件)。双引号include用于告诉编译器在include目录中搜索包含的头文
当我编写程序时,我包括了像
#include
这样的库。但是,#include“iostream”
也是正确的,并且编译代码时不会出现任何错误或问题
因此,我想知道
和“
之间的区别是什么?只查找编译器提供的头文件,而“”首先查找项目目录,如果没有头文件,则只查找编译器提供的头文件
在源文件旁边添加一个名为iostream的文件。现在使用“”包含并观察它失败(因为它将获得空文件)或使用并观察它成功(因为它将忽略本地文件)。双引号include用于告诉编译器在include目录中搜索包含的头文件之前,先在本地目录中查找包含的头文件。当您试图在代码的本地头文件中包含时,可以看到这种差异。如果使用“”包含本地头文件,除非本地目录是“包含”目录路径,否则编译器将失败。使用
时,编译器仅查找系统指定的头目录(例如,在包含环境变量中设置的任何目录)
当您使用“
时,编译器首先在本地目录中查找,如果失败,则像您使用
一样重新搜索。从技术上讲,(即,根据标准),它不必是“本地”目录,但这就是它在我所知道的每个编译器中的工作方式)
如果您介意,标准中的官方措辞实际上有点模糊(§16.2/2-3):
表单的预处理指令
#包括新行
在实现定义的位置序列中搜索由指定位置唯一标识的头
<和>分隔符之间的顺序,并导致该指令被整个内容替换
标题的标题。如何指定位置或标识标头是实现定义的
表单的预处理指令
#包括“q-char-sequence”新行
使该指令替换为指定指令标识的源文件的全部内容
“分隔符”之间的顺序。在定义的实现中搜索命名的源文件
如果不支持此搜索,或者如果搜索失败,则将重新处理该指令,就像读取该指令一样
#包括新行
具有与原始指令相同的包含序列(包括>字符,如果有)
“XXX”-它在您的一个目录中。
-它在微软的SDK或任何SDK中(你可以在中添加),我希望你看看副本,这里所有的答案都是错误的。