VC include 路径解析

右键一个Project,可以发现有两个地方设置Include的相关目录:

1. VC++ Directories -> Include Directories
2. C/C++ -> General -> Additional Include Directories

 

不知道具体有什么区别,后在MSDN上得到答案:

“VC++ Directories -> Include Directories” : Directory settings displayed in the window are the directories that Visual Studio will search for include files referred to in your source code files. Corresponds to environment variable INCLUDE. More information : http://msdn.microsoft.com/en-us/library/t9az1d21(v=vs.80).aspx

 

“C/C++ -> General -> Additional Include Directories”: The directory to be added to the list of directories searched for include files. More information : http://msdn.microsoft.com/en-us/library/73f9s62w(v=vs.80).aspx

 

下面那个链接讲的比较清楚了:

The compiler searches for directories in the following order:

1.Directories containing the source file.

2.Directories specified with the /I option, in the order that CL encounters them.

3.Directories specified in the INCLUDE environment variable.

 

order2中的/I是由C/C++ -> General -> Additional Include Directories设置的。

order3中的INCLUDE是由VC++ Directories -> Include Directories设置的。




今天发现一个不错的帖子。转到自己的博客,收藏。

 

要了解vc中使用#include命令包含头文件所搜寻的路径,必须先了解vc中的几种路径:

1. 系统路径

系统路径在vc中是"Tools->Options->Directories"中"Include files"指定的路径。

打开此对话框会发现默认有这几条路径:

C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE

C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE

C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE

我们可以在这里添加,这样我们自己添加的路径也会成为系统路径。添加的格式必须按照上面来写。

2. 当前路径

当前路径是指vc工程中工程文件所在的路径,即.dsw文件所在路径。

网上有很多朋友说,当前路径是指.cpp文件所在路径,经过测试,这个说法也是正确的。但是使用vc编译时,是不正确的。

3. 附加路径

附加路径是指在"Project->Settings->C/C++->Preprocessor->Additional include directories "中指定的路径。

此路径默认为空,我们可以在此处填写需要路径,比如:在此处填入"C:\123\",(不要引号),那么附加路径就会变成"C:\123\" 。

上面的1,3路径,我们均可以自己编辑。在编辑过程中,可以使用绝对路径,也可以使用相对路径。

比如,在添加系统路径时,可以这样填写:

 .\SRC\  这样写表示,当前目录中的SRC文件夹;

 ..\SRC\  这样写表示,当前目录的上一层目录中SRC文件夹;

 ...\SRC\ 这样写表示,当前目录下  ..\SRC\\ 路径,当然这种写法已经和第一种重叠了。

这种相对路径的写法,vc会自动帮我们转化为绝对路径。

在添加附加路径时,其相对路径的写法和系统路径是一致的。

在vc中使用#include 命令,有三种形式:

1. #include

vc执行这条指令时,它会在系统目录中去查找 file.h 文件。

在此条码命令中,vc不会去当前路径和附加路径中查找文件。

2. #include "file.h"

vc执行这条指令时,它首先会搜索附加路径,如果没有则会搜索系统路径,如果还没有则会去搜索当前路径。

3. #include "directory\file.h"

vc执行这条指令时,它会去指定的路径去查找文件,如果没找到,它不会继续查找。 

你可能感兴趣的:(VC include 路径解析)