打印
[开发工具]

KEIL5 头文件路径设置摸索和总结

[复制链接]
1016|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bestwell|  楼主 | 2022-12-10 22:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.常识1.1绝对路径和相对路径的认知:

绝对路径:是从盘符开始的路径,形如
C:\windows\system32\cmd.exe
相对路径:是从当前路径开始的路径,假如当前路径为C:\windows
要描述上述路径,只需输入
system32\cmd.exe
实际上,严格的相对路径写法应为
.\system32\cmd.exe
其中,.表示当前路径。
假如当前路径为c:\program files
要调用上述命令,则需要输入
…\windows\system32\cmd.exe
其中,…为父目录。
当前路径如果为c:\program files\common files
则需要输入
…\windows\system32\cmd.exe

1.2在windows环境下的相对路径表示

" .\ "表示当前目录,
" …\ "表示当前目录的上一级目录,
并且 "…"可以连用,也就是可以写成 " …"表示当前目录的上级目录的上级目录的上级目录。

1.3

#include <xxxx.h>
直接访问软件安装位置的库文件
#include “xxxx.h”
先访问程序定义头文件的位置,没找到再去库文件查找文件。

1.4

#include “./ucos_ii.h”
#include “.\ucos_ii.h”
#include “ucos_ii.h
三者效果一致
以后采取统一标准的写法,即
#include “.\ucos_ii.h”

2.路径设置摸索2.1软件项目的目录示意




软件程序中个文件的目录框架

2.2options for target 中的路径设置


选择路径时是绝对路径

在这里显示的是相对路径了
说明在这里,将绝对路径转化为相对路径了。
在这里,提出一个问题:
如果我想用相对路径方式来调用头文件的话,我必须清楚当前路径是什么!

从上面两张图可以推断出当前路径是什么,推断过程如下:
假设当前路径时main.c文件所在位置,即
E:\05_Program\03_Keil4\a20190115_can_rs485_lpc1766_01(locked)\UserCode\Source
那么Project这个文件夹所应表示的相对路径应为:
…\Project
那么Source这个文件夹所应表示的相对路径应为:
…\Source
因此可以判定,当前路径不是main.c文件所在的位置。

假设当前路径时LPC1700.uvproj文件所在位置,即E:\05_Program\03_Keil4\a20190114_can_rs485_lpc1766_01(locked)\Project
那么Project这个文件夹所应表示的相对路径应为:
…\Project
那么Source这个文件夹所应表示的相对路径应为:
…\UserCode\Source
因此可以判定,当前路径是LPC1700.uvproj文件所在的位置。

若是依旧不确定,可以尝试着将文件的绝对路径再次更改下,即可确认是否正确。

3.路径设置方式3.1方式1

在“options for target ‘LPC1700’的C/C++中的include paths”中包含所有头文件所在的路径;比如:gpio.c这个源文件要调用uart.h、gpio.h、config.h这两个头文件,那包含路径的写法如下:
#include “gpio.h”
#include “uart.h”
#include “config.h”
这种写法有时候会出现编译错误,也就是给人感觉一团乱。我不喜欢,没存在感!

3.2方式2

以自身文件(源文件或头文件)所在的路径为基准,找其他的头文件,比如:gpio.c这个源文件要调用uart.h、gpio.h、config.h这两个头文件,那包含路径的写法如下:
#include “.\gpio.h”
#include “…\Uart\uart.h”
#include “…\UserCode\Source\config.h”
这一种路径定义的方式可以确认每一条路径设置的正确姿势,前提是对整个软件的架构很熟悉,我建议采用这种,可以确保路径的指向是正确的。


使用特权

评论回复
沙发
Undshing| | 2023-1-3 15:33 | 只看该作者
就是每次要翻包含路径挺麻烦的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

1649

帖子

1

粉丝