C/C++包含头文件的两种方式:尖括号方式 (<>)和双引号方式 (““)的区别

在 C 语言中,头文件的包含方式分为两种:

  1. 尖括号方式 (<>)

    #include <header.h>
    

    特点

    • 用于包含系统提供的头文件(标准库或第三方库)。
    • 编译器会在指定的系统路径中查找头文件(如标准库路径或其他预定义路径)。
    • 通常用于标准库头文件,例如 <stdio.h><stdlib.h> 等。

    查找顺序

    • 先在系统路径中查找。
    • 如果找不到,则报错。

注意:如果是有Makefile文件,那么是可以把自己写的头文件的路径包含到上面提到的“预定义路径”中,从而实现用尖括号也能找到相应的头文件。比如下面的Makefile代码:

CFLAGS := -Wall -O2 -g
CFLAGS += -I $(shell pwd)/include
  • CFLAGS 定义了编译选项,包括:
    • -Wall:启用所有常见的编译警告。
    • -O2:启用中等优化。
    • -g:生成调试信息。
    • -I $(shell pwd)/include:将当前目录下的 include 目录添加到头文件搜索路径中。

在这种情况下,交叉编译器首先会在 标准系统路径 中查找该文件,而不会查找当前目录。只有在标准路径中没有找到时,才会在其他路径(如 -I 选项指定的目录)中查找。


  1. 双引号方式 ("")

    #include "header.h"
    

    特点

    • 通常用于包含用户定义的头文件
    • 编译器会先在当前文件所在目录查找头文件。
    • 如果当前目录找不到,再转而到系统路径中查找。

    查找顺序

    • 先在当前文件所在目录查找。
    • 如果找不到,再在系统路径中查找。

主要区别

  • 查找路径

    • #include <header.h>:直接查找系统路径,不会优先查找当前目录。
    • #include "header.h":优先查找当前目录,然后再查找系统路径。
  • 使用场景

    • <header.h> 用于标准库或明确位于系统路径中的头文件。
    • "header.h" 用于项目中的自定义头文件。

实际应用中的建议

  1. 标准库头文件:始终使用 <>,例如:

    #include <stdio.h>
    
  2. 项目中的头文件:使用 "",例如:

    #include "myheader.h"
    
  3. 避免歧义:如果系统路径中存在与自定义头文件重名的头文件,使用 <>"" 的查找顺序会影响结果,应尽量避免这种冲突。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昊虹AI笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值