通常我们在使用include指令的时候,有两种形式:
#include "file"
#include <file>
比如我们想导入I/0流头文件,我们是这样做的:
#include <iostream>
如果我们有一个Person.h头文件
// Person.h
class Person
{
char * name;
int age ;
// other functions
// ...
}
当我们想在另外一个文件中使用该头文件时:
// other cpp source file
#include <iostream>
#include "Person.h"
int main(){};
这里我们假设这两个文件位于同一级目录下。
那么,用尖括号和用双引号有神马区别呢?
其唯一区别在于编译器的初始寻找路径不一样。
对于双引号的include 指令,编译器首先在包含该include指令的文件当前目录下寻找指定的路径名,如果找到就把找到的文件的所有内容复制到该文件下。如果找不到,则继续在配置的默认目录下寻找指定的文件。
而对于尖括号的include 指令,编译器直接在默认的目录下寻找。
因此,对于标准的头文件如iostream,cstdio,我们都会使用尖括号,而不使用双引号(虽然双引号也行,不过从效率上来看,用尖括号更好)。而对于用户自定义的头文件,一般都会用双引号(因为通常情况下用户写的头文件不会位于默认目录下,因此如果用尖括号会找不到文件)
不过有一个小小的疑问,编译器查找的默认目录到底在哪里呢?
Over...