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

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

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
目录3
目录4
软件程序中个文件的目录框架

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”
这一种路径定义的方式可以确认每一条路径设置的正确姿势,前提是对整个软件的架构很熟悉,我建议采用这种,可以确保路径的指向是正确的。

  • 36
    点赞
  • 133
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值