#include <hello.h> 与 #include “hello.h“的区别
`#include <hello.h>` 和 `#include "hello.h"` 在C/C++中用于包含头文件,但它们在搜索头文件时的行为有所不同,这可能导致前者找不到头文件的情况。
### 区别
1. **搜索路径不同**
- `#include "hello.h"`:编译器首先在当前源文件所在的目录中查找`hello.h`。如果找不到,才会继续在编译器的包含路径(通常是系统头文件路径)中查找。
- `#include <hello.h>`:编译器直接在预定义的包含路径(通常是系统头文件路径)中查找`hello.h`,而不会先在当前源文件目录中查找。
2. **适用场景不同**
- `#include "hello.h"`:通常用于包含用户自定义的头文件,尤其是与当前源文件相关的头文件。
- `#include <hello.h>`:通常用于包含标准库或系统提供的头文件。
### 为什么`#include <hello.h>`会显示找不到头文件
如果使用`#include <hello.h>`,编译器不会在当前源文件所在的目录中查找`hello.h`,而是直接在系统头文件路径中查找。如果`hello.h`不在这些路径中,就会导致“找不到头文件”的错误。
### 解决方法
1. **确保头文件位置正确**
- 如果`hello.h`是用户自定义的头文件,建议将其放在与源文件同一目录下,并使用`#include "hello.h"`。
- 如果必须使用`#include <hello.h>`,需要将`hello.h`所在的目录添加到编译器的包含路径中。例如,在GCC中可以使用`-I`选项指定额外的包含路径:
```bash
gcc -I/path/to/header source.c -o output
```
2. **检查文件名是否正确**
- 确保文件名`hello.h`拼写正确,且大小写与文件系统一致(在类Unix系统中,文件名区分大小写)。
3. **使用相对路径或绝对路径**
- 如果头文件不在当前目录,可以使用相对路径或绝对路径来包含它,例如:
```c
#include "path/to/hello.h"
```
通过以上方法,可以有效解决`#include <hello.h>`找不到头文件的问题。