C语言头文件路径相关问题总结说明 世界观热点

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


(资料图片仅供参考)

二、KEIL 中的头文件路径

2.1 IncudePaths 指定的路径

三、Linux 中的头文件路径

结语

前言:

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

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

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

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

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

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

二、KEIL 中的头文件路径

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

2.1 IncudePaths 指定的路径

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

KEIL5 上是 STM32 的项目:

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

绝对路径和相对路径:

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

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

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

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

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

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

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

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

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

#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

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

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 < >尖括号包含的头文件的查找路径,下面我们来看一下。

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

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

结语:

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

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

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

来源:矜辰所致

版权归原作者所有,如有侵权,请联系删除。

关键词:

重回“国库”!方正证券10.9亿股股票被追缴、没收

5月19日,证券板块整体跌幅0 09%,但方正证券上涨3 78%,涨幅位居板块第一。消息面上,方正证券发布公告称,大连中院依法作出执行裁定书,

深圳商报 2022-05-20

放开限购、“开门迎客” 大量债基收紧申购门槛

近来,不少权益基金放开限购、开门迎客,其中不乏明星基金经理旗下产品。与此同时,大量债券基金却收紧了申购门槛,个别将限购金额上限定为

深圳商报 2022-05-20

排队11个月后 “国产汽水第一股”冰峰饮料告吹

在排队11个月后,国产汽水第一股冰峰饮料上会前主动撤回申请资料,这意味着其IPO告吹。发审委18日晚称,因冰峰饮料撤回申报材料,故取消19

深圳商报 2022-05-20

23年来 “5·19”科技股行情发生了翻天覆地的变化

23年过去,A股市场发生了翻天覆地的变化。同花顺数据显示,1999年5月19日,A股上市公司只有857家,A股总市值仅有2 05万亿元。而今年5月19日

深圳商报 2022-05-20

再获国家首肯!23家深圳专精特新“小巨人”进入最新名单

深圳创新能力,再获国家首肯。23家深圳专精特新小巨人,进入国家专精特新中小企业高质量发展最新建议支持名单。按照安排,国家将拿出100亿

深圳商报 2022-05-20

各行业工资单出炉!IT类最赚钱,还有这些钱景喜人

  中新经纬11月24日电 (张澍楠)虽说三百六十行,行行出状元,但行业之间的差距,仍然很大。究竟什么行业“最香”?被视为“高富帅”的金

2021-11-24

“狗咬人”事件当事人被撤职 多名干部被问责

  新华社郑州11月23日电(记者冯大鹏)在“狗咬人”舆情发酵后,23日晚,河南安阳通报了对涉“狗咬人”事件责任单位和责任人的处理决定。 

2021-11-24

重回“国库”!方正证券10.9亿股股票被追缴、没收

5月19日,证券板块整体跌幅0 09%,但方正证券上涨3 78%,涨幅位居板块第一。消息面上,方正证券发布公告称,大连中院依法作出执行裁定书,

深圳商报 2022-05-20

放开限购、“开门迎客” 大量债基收紧申购门槛

近来,不少权益基金放开限购、开门迎客,其中不乏明星基金经理旗下产品。与此同时,大量债券基金却收紧了申购门槛,个别将限购金额上限定为

深圳商报 2022-05-20

排队11个月后 “国产汽水第一股”冰峰饮料告吹

在排队11个月后,国产汽水第一股冰峰饮料上会前主动撤回申请资料,这意味着其IPO告吹。发审委18日晚称,因冰峰饮料撤回申报材料,故取消19

深圳商报 2022-05-20

23年来 “5·19”科技股行情发生了翻天覆地的变化

23年过去,A股市场发生了翻天覆地的变化。同花顺数据显示,1999年5月19日,A股上市公司只有857家,A股总市值仅有2 05万亿元。而今年5月19日

深圳商报 2022-05-20

再获国家首肯!23家深圳专精特新“小巨人”进入最新名单

深圳创新能力,再获国家首肯。23家深圳专精特新小巨人,进入国家专精特新中小企业高质量发展最新建议支持名单。按照安排,国家将拿出100亿

深圳商报 2022-05-20

各行业工资单出炉!IT类最赚钱,还有这些钱景喜人

  中新经纬11月24日电 (张澍楠)虽说三百六十行,行行出状元,但行业之间的差距,仍然很大。究竟什么行业“最香”?被视为“高富帅”的金

2021-11-24

“狗咬人”事件当事人被撤职 多名干部被问责

  新华社郑州11月23日电(记者冯大鹏)在“狗咬人”舆情发酵后,23日晚,河南安阳通报了对涉“狗咬人”事件责任单位和责任人的处理决定。 

2021-11-24
x 广告
x 广告
x 广告

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