最近在看以前同事写的代码,遇到了这样的头文件包含:
在os_cpu.c源文件中:
cpp
#include "..\..\uCOS-II\Source\ucos_ii.h"
在os_flag.c源文件中:
cpp
#include "..\..\uCOS-II\Source\ucos_ii.h"
在lib_mem.c源文件中
cpp
#include "..\uC-LIB\lib_mem.h"
这三个头文件包含语句中使用了"..\"表示的上一个目录,现在就有一个问题,谁的上一个路径,也可以这样说,当前路径是在哪里?
我以前错误的任务都是以keil MDK或者IAR等工程文件为起始路径:


vscode导入keil MDK工程后的头文件包含路径:

vscode导入IAR工程后的头文件包含路径:

发现以上四种情况都是以keil MDK、IAR、vscode工作区等工程文件所在路径为起始路径。于是就错误认为在源文件中所在当前路径也是工程文件所在路径,其实这种想法是错误的。
正确的理解为:源文件所在路径为当前路径,以这个为起始路径,在源文件中包含其他路径的头文件。
这样写代码更容易理解,也更加合理,不用关心工程文件所在路径在哪里,我就以正在编辑的源文件为起始路径,为起始点,然后包含想要包含的头文件。