你应该搞懂的 C 语言头文件路径问题 全球即时

2023-06-14 12:07:01 来源: 矜辰所致
聊聊 C 语言项目的系统路径位置,绝对路径与相对路径,正斜杠 `/`与 反斜杠`\\` 使用说明   ......  by 矜辰所致

前言

前段时间在写 Linux专栏的过程中,忽然想到一个问题 :C语言的头文件路径,因为在GCC环境下面,可以很直观的了解到程序对头文件的查找位置,但是对于使用集成开发环境 KEIL或者 IAR 的朋友们来说,一些系统的库文件路径根本就不知道在什么地方。


(资料图片)

所以本文我们就来聊一下 C 语言的头文件路径相关的问题 ,包括系统路径位置,绝对路径与相对路径,正斜杠 / 与 反斜杠 \\ 使用说明等。

我是矜辰所致,全网同名,尽量用心写好每一系列文章,不浮夸,不将就,认真对待学知识的我们,矜辰所致,金石为开!

一、C语言中的头文件引用

我们都知道,在我们 C 编程的时候,我们头文件的引用使用的是 #include <>或者 #include "",比如:

而且大家应该都知道:

include 使用双引号" ",编译器首先在当前目录下查找头文件,如果没有找到,再到系统目录下查找。

include 使用尖括号< >,编译器会到系统目录下查找头文件;

.

这里额外提一句,因为 使用双引号" "如果在当前目录找不到头文件,最终还是会去系统路径下寻找,所以头文件包含,完全可以都使用双引号" " ,至于实际中还是有很多使用 < > 和 " " 混搭,那是因为在确定是引用系统路径的头文件的时候,使用 < > 相对来说效率高那么一点点,省去了在当前目录下面寻找的那一点时间。

对于使用双引号" " 的当前目录下查找,大家应该都知道,就是与引用头文件的.c文件相同的目录下,比如上面是 main.c文件引用的,就是首先在与 main.c相同的目录中去查找。

那么对于 < > 从系统路径中搜索,这个系统目录到底在哪里呢?

二、KEIL 中的头文件路径

我们先从我们熟悉的 IDE 入手,用 KEIL 来说明一下。

2.1 IncudePaths 指定的路径

在我们使用 KEIL 做项目的时候,都需要一个IncudePaths,就是填写头文件路径,如下图所示:

KEIL4 上是51单片机的项目:

KEIL5 上是 STM32的项目:

为了工程结构框架,我们不可能把文件放在同一个目录下面,所以需要进行额外的指定头文件路径,这里只要用过 KEIL 的朋友应该都能明白。

对于 include 使用双引号" "的头文件,首先会在引用头文件的.c文件相同的目录下去查找,如果查找不到,会在上面 IncudePaths设置中所有设置过的目录中去查找,这一点我们不多赘述。

绝对路径和相对路径

这里我们额外说明一个问题,绝对路径与相对路径。

在上面的示例图中,我们可以看到,IncudePaths里面所添加的路径,都是 ../开头的,这种表示方式就是相对路径。

使用相对路径的好处是即便整个工程移动了位置,也无需修改什么设置,因为工程文件的相对位置没有改变。

简单复习下相对路径的表示:

./: 表示当前路径

../:表示上一级目录

绝对路径就比较简单了,绝对路径就是直接从根部(盘符)开始表示的路径,在 Windows 中,就是 C盘,D盘,这些,在 Linux 中,没有盘符的说法,根部就是 /,比如下面两个都是绝对路径的表示:

C:\\Keil\\C51

/home/qzh/linux

正斜杠 / 与 反斜杠 \\ 与双斜杠

正好提到文件路径,顺带把斜杠的问题也说一下,在上面示意图中,我们可以看到,既有正斜杠,又有反斜杠:

对于路径的表示 ( 声明,这里只是针对文件路径!路径! ):

Linux 中都使用正斜杠 /

.

Linux下好理解,只能用正斜杠 /:/home/qzh/linux

.

在Windows 中,稍微复杂一点

.

在Windows 中常用 反斜杠 \\,比如我们随便看一个系统显示的路径都是反斜杠 \\

.

实际上,Windows 除了在一些特定的场合必须用反斜杠 \\,在引用路径的时候斜杠/和反斜杠\\可以互用的。

比如下面两种方式的引用都是可以的:

#include "..\\led\\led.h" #include "../led/led.h"

为了可移植性,引入头文件时建议使用正斜杠/#include "../led/led.h"

不仅如此,在Windows下引用文件路径的时候,正反双斜杠//\\\\与斜杠 /、反斜杠\\可以互用的,如下图所示:

双斜杠

在写一些脚本或者程序的时候(上面是引用路径的情况,这里额外提一下程序中的情况,程序中!程序中!),我们也经常看到双斜杠,比如:

C:\\\\Keil\\\\C51

这种路径表示是为什么呢?

因为在大多编译器中,\\是一个转义字符,例如\\n,\\r,所以如果使用反斜杠 \\,会使得路径出问题,所以会写成 \\\\

当然正如我们上面说过的,我们在程序中可以写成 C:\\\\Keil\\\\C51,当然也可以使用 斜杠 /写成C:/Keil/C51

2.2 include < > 搜索的系统路径

额外提了那么多,回到我们的正题,来说说在 KEIL 中的 #include < >的查找路径。

比如我们在本文第一张示意图上有一个应用#include ,我们明确的告诉编译器这个需要从系统路径中去查找,这个 KEIL 所谓的系统路径在什么地方呢?

这里我们也没什么好分析的,直接告诉大家答案:

第一个基于51平台的,使用的 51 的编译器, #include < >的查找路径为“KEIL的安装目录”:\\Keil\\C51\\INC,比如博主的KEIL安装在C盘,这个路径就是C:\\Keil\\C51\\INC

当然,我们可以简单的做个试验确认一下,我们可以在 KEIL 中先打开 这个头文件:

然后我们打开C:\\Keil\\C51\\INC目录下的 MATH.h 文件,进行简单的修改,然后看一下是否是同一个文件,如下图:

那么对于 KEIL5 中的 STM32 中如果使用 #include < >,那么这个的查找路径又是怎样的呢?

STM32 在 KEIL中使用的编译器为 ARMCC,这个系统路径的位置为:“KEIL的安装目录”:\\Keil_v5\\ARM\\ARMCC\\include,比如博主的KEIL安装在C盘,这个路径就是C:\\Keil_v5\\ARM\\ARMCC\\include

这一点我就不去确定了,大家可以自己添加一个库函数头文件,然后自己根据上文的方式测试一下便知。

三、Linux 中的头文件路径

上面介绍了 Windows 下的 KEIL 环境中的头文件系统路径,那么我们来看看 Linux 中的路径又是在哪里,我们知道在 Linux 中 C 语言的编译器是 GCC 编译器,在文章开头的前言我就写过了, 使用 GCC 编译器可以很直观的查看到 #include < >尖括号包含的头文件的查找路径,下面我们来看一下。

写一个简单的程序,里面用到了 这个头文件,我们可以使用编译选项 -v来打印出详细的编译步骤:

如上图所示,在 Linux 是不是很直观,没什么需要特别说明的。

那么我们再换另外一种编译器,其实还是 GCC ,只不过是 ARMGCC,我们也来看一看:

可以看到,同样的可以很直观的看到尖括号包含的头文件的搜索位置,当然,因为编译器的更换,他们搜索的位置也改变了。

最后简单总结一下,使用 #include < > 所包含的头文件,其查找路径和使用的编译器有关,编译器都会自带常用的库文件,在 GCC 环境下面,使用 -v 选项就会自动打印出查找位置,使用 IDE 环境根据 IDE 使用的编译器不同存放在对应的目录文件下面,一般来说都可以在 IDE 安装目录中可以找到。

结语

本文我们针对 C 语言头文件路径问题进行了讲解,举例说明了 Windows 下的 IDE 环境中 和 Linux 下GCC 环境中的C语言的 头文件查找路径。

文中还对引出的绝对路径与相对路径,还有路径引用时候的 正斜杠 /与 反斜杠 \\与双斜杠 进行了说明。

希望大家以后在遇到头文件路径问题的时候,能够知道如何去查找问题,解决问题!

好了,本文就到这里,谢谢大家!

审核编辑:汤梓红

标签:

你应该搞懂的 C 语言头文件路径问题 全球即时

前段时间在写Linux专栏的过程中,忽然想到一个问题:C语言的头文件路径

06-14 12:07:01

每日精选:陕西省造老银元价格(2023年06月14日)

金投白银网提供陕西省造老银元价格(2023年06月14日),陕西省造老银元

06-14 11:48:31

云游双拓展房车,带你享高品质旅居!

戴德云游主张以用户真实需求为导向,旨在打造清晰、一致、独特的品牌形

06-14 11:14:42

物流股异动 长久物流直线拉升涨停

南方财经6月14日电,物流股异动,长久物流直线拉升涨停,东方嘉盛、三

06-14 10:44:57

全球观热点:哈洽时间丨佳木斯东风区 乘“东风”促振兴 谋发展惠民生

项目建设加速度市场主体添活力生态“东风”。一级能效电机、永磁电机研

06-14 10:31:58

6月15日上市 领克09五座版官图发布

日前,领克官方发布了领克09(图片|配置|询价)五座版车型官图。新车将新

06-14 10:05:46

涨了!合肥市住房公积金缴存基数上限调整

大皖新闻讯6月13日,合肥市住房公积金管理中心发布《关于调整2023年度

06-14 09:43:59

每日热闻!强微绕量子态选择布居研究获进展

科技日报兰州6月13日电(记者颉满斌)记者13日从中国科学院近代物理研

06-14 08:55:54

世界短讯!绿地控股:6月13日融资买入1559.64万元,融资融券余额15.61亿元

6月13日,绿地控股(600606)融资买入1559 64万元,融资偿还1171 96万

06-14 08:34:16

手机网上缴费怎么开发票_手机网上缴费 环球滚动

想必现在有很多小伙伴对于手机网上缴费方面的知识都比较想要了解,那么

06-14 07:54:10

环球视讯!沪深股通|青海春天6月13日获外资卖出0.02%股份

同花顺数据显示,2023年6月13日,青海春天获外资卖出11 31万股,占流通

06-14 06:57:45

下雨天真好诗歌原文_下雨天真好诗歌|全球播报

1、下雨天,真好!喜欢追随雨的脚步,喜欢漫步雨的怀抱,喜欢聆听雨的音籁,

06-14 06:13:19

今日看点:甲骨文(ORCL.US)获分析师上调评级及目标价 但观望情绪浓厚

亚汇网获悉,受益于超预期财报,甲骨文(ORCL U)股价创下历史新高。高盛

06-14 04:54:09

初三化学元素表教学_初三化学元素表

1、需要记住前20种元素:氢氦锂铍硼HHeLiBeB碳氮氧氟氖CNOFNe钠镁铝

06-14 02:50:18

地接社和旅行社的区别_地接是什么意思

1、当地接待。2、除非你是超级贵宾团,否则一般本地的旅行社只送到机场

06-14 01:03:48

江苏德邦兴华化工股份有限公司淮南分公司_关于江苏德邦兴华化工股份有限公司淮南分公司简述-世界热闻

1、淮南分公司在原皖淮化工生产装置上不断进行技改扩建,现拥有全国最

06-14 00:03:12

蔚来汽车预计下半年平均月销超过2万辆,现金储备充足|环球速讯

IT采购网6月9日消息,蔚来汽车公布了2023年第一季度的财务数据。数据显

06-13 22:05:08

“以假乱真”的毒海螺,浙江女子吃下后心跳骤停!我们如何辨别? 今日看点

“以假乱真”的毒海螺,浙江女子吃下后心跳骤停!

06-13 22:05:17

每日简讯:配混动系统 新款标致508旅行版实车亮相 前脸很凶狠

在勒芒24小时耐力赛期间,标致旗下的新款508SWPSE车型首发亮相,新车可

06-13 21:06:39

神火股份:公司子公司神隆宝鼎分拆上市-热议

神火股份公告,公司总体战略布局,公司拟筹划分拆控股子公司神隆宝鼎至

06-13 20:50:34

风险投资退出机制的问题_风险投资退出机制

1、退出机制,就是一整套让投资机构可以从被投资企业中退出的方法、渠

06-13 20:01:30

关谷神奇的睡衣(关谷神奇的睡衣)

导读1、我也超喜欢这套衣服的,既然喜欢,为什么不买一套穿呢,西西

06-13 19:24:06

环球快讯:尹锡悦的思维和价值取向,决定了中韩关系会在他的任内冷淡

韩国将攻击火力对准了中国驻韩大使邢海明。尹锡悦周二在一个会议上说,

06-13 18:45:44

头条焦点:京东健康618消化系统用药榜:安素、能全素、能全力位列TOP3

电商报快讯:时值京东健康618期间,消化系统相关药品也迎来了热销高潮

06-13 18:05:54

AMD或于2023Q3至Q4之间发布Radeon RX 7800 XT,定价与RTX 4070相若 每日消息

AMD已经发布了基于RDNA3架构的Navi31和Navi33两款GPU,对应的是桌面平

06-13 17:47:20

天天观速讯丨2023昆山民办学校招生咨询电话

民办学校招生咨询电话学校咨询电话秀峰中学57782320通海中学36603235;1

06-13 16:57:30

水佳110千伏输变电工程预计7月竣工投产|当前视讯

浏阳日报讯(记者周红珍)6月12日,水佳110千伏输变电工程项目现场一片

06-13 16:50:04

华为或将发布低价折叠屏手机:NOVA系列把折叠屏价格打下来

折叠屏手机目前的价格已经降至5000-6000元的范围,但对于某些消费者来

06-13 16:06:40

小故事大全300字左右四年级_小故事大全300字_环球热消息

1、这是我最喜欢的一个故事:有一对情侣,男的非常懦弱,做什麼事情之

06-13 15:39:43

速读:博彩股上涨 澳博控股涨近4%

6月13日电,港股博彩板块上涨。截至发稿,凯升控股(00102 HK)涨超4%,

06-13 14:56:46

联合国:支持成立!

古特雷斯宣布,将在未来几天组建一个由人工智能专家和联合国机构首席科

06-13 14:39:53

唯科科技:公司空气净化器订单因山火等原因近期同比有较大幅度地增长_天天热资讯

唯科科技6月13日在互动平台表示,公司的空气净化器订单因山火等原因近

06-13 13:58:07

聚辰股份(688123)盘中异动 股价振幅达8.25% 上涨7.08%(06-13) 世界热点评

摘要:2023年06月13日聚辰股份(688123)股价大幅拉升7 08%,该股报76

06-13 13:09:20

突发追尾事故,均安PTU快速到场解救 热推荐

珠江商报讯记者谢意通讯员兰佳林报道:近日,在顺德均安发生了一起两车

06-13 12:34:48

熬夜看球!约基奇家乡球迷庆祝其夺冠 G5开赛于当地时间凌晨2点半_世界滚动

直播吧6月13日讯 今天,NBA总决赛G5,掘金94-89战胜热火,大比分4-1成

06-13 12:07:04

新王登基!掘金4-1击败热火 夺得队史第一座总冠军奖杯

今日NBA总决赛G5,掘金在主场战胜热火,总比分4-1夺得2022-23赛季NBA总

06-13 11:42:57

我只觉得他们吵闹!总决赛结束 莫兰特的禁赛结果即将公布

NBA总决赛,掘金94-89击败热火,大比分4-1击败对手,夺得队史首冠。因

06-13 11:02:35

世界热门:史上最贵苹果手机!消息称iPhone 15系列涨100至200美元 库克不惯着你们

快科技6月13日消息,在iPhone涨价这件事上,库克可不惯着你,所以想要

06-13 10:48:35

【全球新视野】卓锦股份:6月12日融资买入37.48万元,融资融券余额3450.52万元

6月12日,卓锦股份(688701)融资买入37 48万元,融资偿还136 81万元,

06-13 10:20:50

元隆雅图(002878):6月13日技术指标出现看涨信号-“红三兵”

截至发稿,元隆雅图(002878)报19 08元 股,成交量1 863万手,换手率0

06-13 09:50:14

东方碳素确定A股IPO发行价为12.6元/股,6月15日申购_今亮点

据悉,本次发行价格12 60元 股,发行规模不超过3680万股股票(含超额配

06-13 09:10:01

豪爵UHR150踏板才是骑士的最终归宿!|聚焦

大家好,豪爵UHR150踏板摩托车是一款时尚、实用的城市代步工具。它的外

06-13 08:48:15

Xbox发布会好多日厂游戏 斯宾塞:和日厂关系有所改善

XboxShowcase2023对于很多日本IP的粉丝来说的确值得庆祝,有多个《女神

06-13 08:00:32

环球微资讯!落落大方的女生什么样?有7个特征!

即使是初次见面的日子,也能马上让人放松下来,这是因为不拘小节的女性

06-13 07:55:16

四川大学:将依规处理涉事女生 环球最资讯

近日,广州地铁8号线“大叔被疑偷拍自证清白后仍被曝光”事件引发关注

06-13 06:39:40

环球观察:解局 | 从颐樾府预售看深圳控股20%增长目标

颐樾府项目的预售,将是深圳控股实现年内销售增长20%目标的重要助力。

06-13 05:39:38

可以用水扑灭的火灾是下列哪种物质? A、油类起火 可以用水扑灭的火灾是下列哪种物质( 今日热闻

今天来聊聊以用水扑灭的火灾是下列哪种物质?,A、油类起火,可以用水扑

06-13 03:57:34

天天快播:鼎信通讯:中标1.45亿元南方电网招标项目

新京报贝壳财经讯鼎信通讯(603421)公告,在“南方电网公司2023年计量产

06-13 02:37:00

专业家居清洁公司_家安家居清洁

上海家化是家居清洁领域的知名创新品牌,专注于成为家居环境清洁护理领

06-13 02:08:42

peek材料多少钱一公斤白色 peek塑胶料多少钱一公斤

1、随着国内特种工程塑料研发技术的不断提高,特种工程塑料PEEK价格也

06-12 23:37:42

每日精选:陕西省造老银元价格(2023年06月14日)
云游双拓展房车,带你享高品质旅居!
物流股异动 长久物流直线拉升涨停
全球观热点:哈洽时间丨佳木斯东风区 乘“东风”促振兴 谋发展惠民生
6月15日上市 领克09五座版官图发布
涨了!合肥市住房公积金缴存基数上限调整
每日热闻!强微绕量子态选择布居研究获进展
世界短讯!绿地控股:6月13日融资买入1559.64万元,融资融券余额15.61亿元
手机网上缴费怎么开发票_手机网上缴费 环球滚动
环球视讯!沪深股通|青海春天6月13日获外资卖出0.02%股份
下雨天真好诗歌原文_下雨天真好诗歌|全球播报
今日看点:甲骨文(ORCL.US)获分析师上调评级及目标价 但观望情绪浓厚
初三化学元素表教学_初三化学元素表
地接社和旅行社的区别_地接是什么意思
江苏德邦兴华化工股份有限公司淮南分公司_关于江苏德邦兴华化工股份有限公司淮南分公司简述-世界热闻
蔚来汽车预计下半年平均月销超过2万辆,现金储备充足|环球速讯
“以假乱真”的毒海螺,浙江女子吃下后心跳骤停!我们如何辨别? 今日看点
每日简讯:配混动系统 新款标致508旅行版实车亮相 前脸很凶狠
神火股份:公司子公司神隆宝鼎分拆上市-热议
风险投资退出机制的问题_风险投资退出机制
关谷神奇的睡衣(关谷神奇的睡衣)
环球快讯:尹锡悦的思维和价值取向,决定了中韩关系会在他的任内冷淡
头条焦点:京东健康618消化系统用药榜:安素、能全素、能全力位列TOP3
AMD或于2023Q3至Q4之间发布Radeon RX 7800 XT,定价与RTX 4070相若 每日消息
天天观速讯丨2023昆山民办学校招生咨询电话
水佳110千伏输变电工程预计7月竣工投产|当前视讯
华为或将发布低价折叠屏手机:NOVA系列把折叠屏价格打下来
小故事大全300字左右四年级_小故事大全300字_环球热消息
速读:博彩股上涨 澳博控股涨近4%
联合国:支持成立!
唯科科技:公司空气净化器订单因山火等原因近期同比有较大幅度地增长_天天热资讯
聚辰股份(688123)盘中异动 股价振幅达8.25% 上涨7.08%(06-13) 世界热点评
突发追尾事故,均安PTU快速到场解救 热推荐
熬夜看球!约基奇家乡球迷庆祝其夺冠 G5开赛于当地时间凌晨2点半_世界滚动
新王登基!掘金4-1击败热火 夺得队史第一座总冠军奖杯
我只觉得他们吵闹!总决赛结束 莫兰特的禁赛结果即将公布
世界热门:史上最贵苹果手机!消息称iPhone 15系列涨100至200美元 库克不惯着你们
【全球新视野】卓锦股份:6月12日融资买入37.48万元,融资融券余额3450.52万元
元隆雅图(002878):6月13日技术指标出现看涨信号-“红三兵”
东方碳素确定A股IPO发行价为12.6元/股,6月15日申购_今亮点
豪爵UHR150踏板才是骑士的最终归宿!|聚焦
Xbox发布会好多日厂游戏 斯宾塞:和日厂关系有所改善
环球微资讯!落落大方的女生什么样?有7个特征!
四川大学:将依规处理涉事女生 环球最资讯
环球观察:解局 | 从颐樾府预售看深圳控股20%增长目标
可以用水扑灭的火灾是下列哪种物质? A、油类起火 可以用水扑灭的火灾是下列哪种物质( 今日热闻
天天快播:鼎信通讯:中标1.45亿元南方电网招标项目
专业家居清洁公司_家安家居清洁
peek材料多少钱一公斤白色 peek塑胶料多少钱一公斤
全轮驱动梅赛德斯C 63货车将成为宝马M3旅行车和奥迪RS4杀手
X 广告
行业动态
X 广告

Copyright ©  2015-2022 北方植物网版权所有  备案号:京ICP备2021034106号-50   联系邮箱: 55 16 53 8@qq.com