MST

星途 面试题库

面试题:C语言中#include包含系统头文件的路径查找规则

在C语言中,#include包含系统头文件时,编译器遵循怎样的路径查找规则?请详细说明<>和" "在路径查找上的区别。
24.5万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
  1. 系统头文件查找路径规则
    • 编译器通常会在预定义的系统目录中查找系统头文件。这些目录因操作系统和编译器而异。例如,在Linux系统下,GCC编译器默认会在/usr/include等目录查找。在Windows系统下,Visual Studio可能会在其安装目录下的相关头文件目录查找(如C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include等)。
  2. <>""在路径查找上的区别
    • <>
      • 当使用<>包含头文件时,编译器会直接在系统头文件目录中查找。例如,#include <stdio.h>,编译器只会在系统指定的用于存放标准库头文件的目录中搜索stdio.h,不会在当前源文件所在目录等其他非系统头文件目录查找。这样做的好处是能确保找到的是系统标准的头文件,避免与自定义头文件混淆。
    • ""
      • 当使用""包含头文件时,编译器首先会在当前源文件所在目录查找头文件。如果在当前目录未找到,编译器才会按照系统头文件查找规则,到系统头文件目录中查找。例如,#include "myheader.h",编译器会先在包含该#include语句的源文件所在目录找myheader.h,若找不到,再去系统头文件目录找。这种方式适合包含项目内自定义的头文件,优先从项目内查找,符合项目开发的实际需求。