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