📌  相关文章
📜  cpp #include "" <> - C++ (1)

📅  最后修改于: 2023-12-03 14:40:14.717000             🧑  作者: Mango

C++中#include <>和""的区别

在C++程序中, #include < >#include " " 用于包含头文件,但它们之间有着重要的区别。在本文中,我们将详细解释这二者之间的区别。

#include < >

语法: #include <header_name>

首先,我们先来看这种头文件包含方式。使用#include < > 包含头文件时,编译器将在标准系统目录和包含环境变量路径中搜索要包含的头文件。这意味着这些头文件通常是由安装的编译器提供的,而不是用户自己编写的头文件。例如,

#include <iostream>

它将包含C++标准库中的 iostream 头文件,它包含了许多输入输出流的类和函数,如 coutcin

#include " "

语法: #include "header_name"

另一个用于包含头文件的方法是使用#include " "。使用这种方式,编译器将首先在当前目录中搜索要包含的头文件。如果没有找到,则会在标准系统目录和路径中搜索文件。这个方式是在用户自己的项目中包含头文件的常用方式。例如,

#include "my_header.h"

它将包含在当前目录中的 my_header.h 头文件。

区别

#include < >#include " " 最主要的区别在于头文件搜索的路径不同。使用#include < > 包含头文件时,编译器只在系统路径中搜索头文件,而使用#include " " 包含头文件时,编译器会先搜索当前目录,然后在系统路径中搜索头文件。

此外,最好不要在头文件中使用 using;当通过 #include " " 包含头文件时,如果头文件使用了 using,则通过该头文件包含的任何其它源文件的名称空间都会泄漏出来,从而可能会导致问题。要避免该问题,可以使用命名空间或 C++ 运算符 :: 限定名称。

结论

使用 #include < > 包含头文件时,编译器会在标准系统目录和包含环境变量路径中搜索头文件,它通常用于包含编译器提供的头文件,如 iostream

使用 #include " " 包含头文件时,编译器会首先在当前目录中搜索头文件,然后再到标准系统目录和环境变量路径中搜索头文件,它通常用于包含用户自己编写的头文件或第三方头文件。

使用命名空间或限定名称,可避免通过 #include " " 包含头文件时使用的名称污染。