VS2016相对路径
(1)头文件和源文件的Include相对路径是否存在区别。
答:不一定。两者的起点均为其本身所在路径和附加包含目录路径,与工程文件路径无关。但需要指出(附加)包含目录由项目属性设置,设置时,附加包含目录相对路径的起点位于工程文件所在目录。
在一项目中,在include中相对路径采用的是附加包含目录时,尽管当前的项目可能正常编译使用。当这些文件被其他项目加载,其他项目存在不同的附加包含目录,此时可能出现include失败(找不到头文件)。因而,我们在搭建项目时,应优先使用其本身所在的路径作为include相对路径,同时保证文件间的相对层次关系不变(否则也可能失败)。
源文件被加载到项目中一般通过手动添加,而头文件除了手动添加外,还可能被加载到项目中的文件间接include,这些间接include的头文件将会出现在外部依赖项。
(2)include相对路径和读取文件相对路径的区别
include相对路径如上所示,存在多个起点。
读取文件的相对路径起点与工作目录相关,而非由某源文件所在的路径or工程文件路径决定。调试时,工作目录为VS属性中设置的工作目录(可修改,通常为工程文件所在路径),双击exe时,工作目录则为exe所在的路径,两者区别很大。
同时,在调试时,程序可能存在多个项目,此时所有项目均应按照main函数所在项目的工作目录作为读取数据的相对路径起点。