STM32程序(移植)中头文件的路径

例:#include "./BSP/LCD/lcd.h"为什么有的头文件加了路径?

先看AI的回答:

在C和C++编程中,当我们在源文件中包含(或称为"引入"或"导入")一个头文件时,编译器需要知道这个头文件的位置。通常,编译器会在几个预定义的目录(如系统目录、项目的include目录等)中查找这些头文件。但有时,这些头文件可能不在这些标准目录中,或者可能有多个同名文件,并且你想确保包含的是正确的一个。

在这种情况下,你可以通过提供头文件的完整路径来明确地告诉编译器去哪里找这个文件。这就是为什么你有时会在#include指令中看到路径的原因。

例如,#include "./BSP/LCD/lcd.h" 告诉编译器在当前目录(由.表示)下的BSP/LCD/子目录中查找lcd.h文件。

这种写法有几个要点:

  1. 相对路径 :这里使用的是相对路径,其中./表示当前目录。你也可以使用其他相对路径,如../表示上一级目录。
  2. 避免命名冲突:通过指定完整的路径,你可以确保即使系统目录或其他地方有同名的头文件,你的代码也会引用正确的一个。
  3. 组织性:在某些项目中,头文件和其他源文件可能根据功能或模块被组织在不同的目录中。通过指定路径,可以清晰地表明头文件属于哪个部分或模块。
  4. 移植性:使用绝对路径或特定于平台的相对路径可能会降低代码的移植性。因此,当可能时,最好使用相对于项目根目录或源代码文件的相对路径。

总之,通过在#include指令中包含路径,你可以更精确地控制编译器查找头文件的方式,并确保引入的是正确的文件。

下面是验证:

文件实际路径:

上面的四个文件每一个都包含各自的.c和.h文件

而我们在keil中添加头文件的路径是这样的:

在main.c中引用:

经编译正确,对应关系:

唯一区别的是#include "./LCD/lcd.h" .上图改成下图同样效果:

相关推荐
RadiumAg40 分钟前
记一道有趣的面试题
前端·javascript
yangzhi_emo44 分钟前
ES6笔记2
开发语言·前端·javascript
yanlele1 小时前
我用爬虫抓取了 25 年 5 月掘金热门面试文章
前端·javascript·面试
九年义务漏网鲨鱼2 小时前
【大模型学习 | MINIGPT-4原理】
人工智能·深度学习·学习·语言模型·多模态
小宋同学在不断学习2 小时前
stm32--SPI原理应用W25Q64(二)
stm32·单片机·spi
jz_ddk2 小时前
[学习] C语言数学库函数背后的故事:`double erf(double x)`
c语言·开发语言·学习
lingzhilab2 小时前
零知开源——STM32F4结合BMP581气压传感器实现ST7789中文显示教程
stm32·单片机·嵌入式硬件
xiaolang_8616_wjl2 小时前
c++文字游戏_闯关打怪2.0(开源)
开发语言·c++·开源
夜月yeyue2 小时前
设计模式分析
linux·c++·stm32·单片机·嵌入式硬件
中微子2 小时前
React状态管理最佳实践
前端