面试题答案
一键面试- #include 的查找顺序:
- 这种形式一般用于包含系统头文件。预处理器首先在系统指定的标准头文件目录中查找。例如在Linux系统中,可能是
/usr/include
等目录。如果在这些系统目录中找不到该头文件,则编译失败。
- 这种形式一般用于包含系统头文件。预处理器首先在系统指定的标准头文件目录中查找。例如在Linux系统中,可能是
- #include "filename" 的查找顺序:
- 预处理器首先在当前源文件所在的目录中查找被包含的文件。如果在当前目录找不到,再到系统指定的标准头文件目录中查找,和
#include <filename>
查找系统目录的方式类似。
- 预处理器首先在当前源文件所在的目录中查找被包含的文件。如果在当前目录找不到,再到系统指定的标准头文件目录中查找,和
- 举例说明不同情况:
- 假设有一个自定义头文件
myheader.h
,存放在当前源文件所在目录,同时系统目录中也有一个同名但内容不同的myheader.h
。 - 当使用
#include "myheader.h"
时,预处理器会先在当前源文件目录找到自定义的myheader.h
并包含进来。 - 当使用
#include <myheader.h>
时,预处理器不会查找当前源文件目录,而是直接在系统目录中找myheader.h
,这样就会找到系统目录中同名但内容不同的头文件,可能导致程序出现不符合预期的行为。
- 假设有一个自定义头文件