MST
星途 面试题库

面试题:C语言中#include指令的文件查找顺序

在C语言中,#include指令有两种形式:#include <filename> 和 #include "filename",请详细说明这两种形式在查找被包含文件时的顺序分别是怎样的,并且举例说明可能会出现的不同情况。
12.2万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

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