初识C++与Visual Studio(7)——Visual Studio2017头文件的路径问题(本专栏完结)

学过C语言/C++的人可能都知道下面二者都是正确的:

#include 
#include "iostream"

但是在使用Visual Studio当你在<>中间输入ios的时候,vs会给你推荐符合这个前缀的头文件,如下:
在这里插入图片描述
如果你用的是“”,VS则不会给你推荐“iostream”。
初识C++与Visual Studio(7)——Visual Studio2017头文件的路径问题(本专栏完结)_第1张图片
所以问题来了:是什么决定VS在哪个路径下搜索头文件?

答案就是项目属性中的VC++目录。我们先看下VC++里面和头文件引用相关的部分,就是包含目录:
初识C++与Visual Studio(7)——Visual Studio2017头文件的路径问题(本专栏完结)_第2张图片
(“VC++目录”下的“包含目录”对应的就是VC++的库文件目录,就是在#include<>时进行搜索的文件夹的集合)

而 iostream 头文件是在 $(VC_IncludePath)的文件夹下面,所以在使用#include<>的时候VS会在这个途径下推荐接近的头文件。从上图可以看到我们创建项目后并没有主动添加路径到这个包含目录里面,而是直接继承了 $(VC_IncludePath)$(WindowsSDK_IncludePath)这两个值。这就解释了#include<>的搜索路径的由来。

那“”中的路径位置又在哪里呢?就在下图中的附加包含目录:
初识C++与Visual Studio(7)——Visual Studio2017头文件的路径问题(本专栏完结)_第3张图片
本来附加包含目录应该是空的,现在由于项目需要我在这里添加了新的相对位置(相对于.vcxproj的位置),因此当输入“”时,会显示该文件夹下的文件内容,如图所示。
初识C++与Visual Studio(7)——Visual Studio2017头文件的路径问题(本专栏完结)_第4张图片

【总结】:“”的搜索路径是保存在C/C++的附加包含目录里,而<>是在VC++目录的包含目录中。所以,你如果不想自己的头文件和一大堆Windows的标准库文件混在一起的话,那就在附加包含目录里添加你自己的include文件夹,并且在使用的时候用#include“”。

本专栏到此就正式完结了,欢迎在评论区友好发言讨论,如果觉得对你有所帮助,记得点个赞哟~

你可能感兴趣的:(C++,c++,visual,studio,开发工具)