角托架&lt的差异;>双引号"“;而包括头文件在c++ ?

< p > 可能的重复: < br > #include <filename>#include " filename " ? < / p >

在c++中包含头文件时,尖括号< >和双引号" "之间的区别是什么?

我的意思是哪些文件应该被包括使用例如:#include <QPushButton>和哪些文件将被包括使用例如:#include "MyFile.h"??

183677 次浏览

它依赖于编译器。也就是说,通常使用"会优先考虑当前工作目录中的头文件而不是系统头文件。<>通常用于系统头文件。从到规范(第6.10.2节):

表单的预处理指令

  # include <h-char-sequence> new-line

在实现定义的位置序列中搜索由<>分隔符之间的指定序列唯一标识的标头,并导致该指令被标头的整个内容替换。如何指定位置或标识头是由实现定义的。

表单的预处理指令

  # include "q-char-sequence" new-line

将该指令替换为源文件的全部内容,这些内容由"分隔符之间的指定顺序标识。以实现定义的方式搜索命名的源文件。如果不支持此搜索,或者搜索失败,则重新处理指令,就像读取指令一样

  # include <h-char-sequence> new-line

与原始的包含序列(包括>字符,如果有的话)相同 指令。< / p >

因此,在大多数编译器上,使用""首先检查您的本地目录,如果没有找到匹配,则继续检查系统路径。使用<>开始搜索系统头文件。

使用尖括号时,编译器会在包含路径列表中搜索文件。当你使用双引号时,它首先搜索当前目录(即正在编译的模块所在的目录),然后才搜索包含路径列表。

因此,按照惯例,标准include使用尖括号,其他所有内容使用双引号。这可以确保在(不推荐)有与标准标头名称相同的本地标头的情况下,在每种情况下都会选择正确的标头。