📜  CC++ 中#include<> 和#include” ” 的区别及示例(1)

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

C/C++ 中 #include<> 和#include"" 的区别及示例

在C/C++编程中,可以通过#include预处理命令包含所需的头文件。其中,#include<> 和#include""两种方式都可以用来包含头文件,但它们有所不同。本文将介绍它们的区别,并提供一些示例来阐明这些区别。

区别
#include<>

当使用 #include<> 时,编译器会搜索标准库的路径来查找所需的头文件。例如,如果你想包含 <stdio.h>,则可以使用如下语句:

#include <stdio.h>

在这种情况下,编译器将在“/usr/include”(或与之等价的目录)中搜索 stdio.h 头文件。这个路径是编译器预定义的标准头文件路径,可以自动包含到编译器中。

注意,使用尖括号(<>)来包含头文件时,文件名不需要提供完全的路径名,因为编译器已经能够找到这些标准库,所以只需要提供文件名即可。

#include""

当使用 #include"" 时,编译器会首先搜索程序所在的当前目录,如果没有找到,就会在系统预定义的路径中查找所需的头文件。

例如,如果你想包含一个名称为 foo.h 的头文件,则可以使用如下语句:

#include "foo.h"

在这种情况下,如果 foo.h 头文件位于当前目录,则编译器将从该目录中获取该头文件。否则,编译器将在编译器预定义的标准路径(如Linux中的 /usr/include)中查找。这就意味着你可以将头文件存储在当前目录,甚至与你的源代码一起打包。

需要注意的是,出于安全方面的考虑,C/C++编译器通常不允许在 #include "" 中使用文件的完整路径,以避免潜在的安全漏洞。

示例

下面是一些示例代码,以说明这两种方法的使用。

#include<> 示例

下面的代码使用 #include<> 来包含 <stdio.h> 头文件:

#include <stdio.h>

int main() {
    printf("Hello, world!");
    return 0;
}
#include"" 示例

下面的代码使用 #include"" 来包含当前目录中的头文件 foo.h:

#include "foo.h"

int main() {
    // 使用foo.h中的函数或变量定义
    return 0;
}
总结

在C/C++编程中,#include<> 和#include""都可以用来包含头文件,但它们有所不同。#include<> 会直接从标准库中查找头文件,而#include""会首先从当前目录中查找头文件,其次才在标准库中查找。因此,要根据实际需要选择使用哪种方式来包含头文件。

参考文献

[1] Difference between #include < > and #include " " in C/C++