include头文件顺序,include文件夹在哪找
从微软网站找到的关于# INCLUDE DIRECTIONAL (C/C)的相关问题解释如下:
#includedirective告诉预处理器将指定文件的内容视为在源程序中该指令出现的位置出现的内容。
与包含#includestatement的文件位于同一目录中。
在以前打开的任何包含文件的目录中,以它们打开的相反顺序。搜索从最后打开的包含文件的目录开始,并继续搜索最先打开的包含文件的目录。
沿着每个/I编译器选项指定的路径。
沿着INCLUDE环境变量指定的路径。
沿着每个/I编译器选项指定的路径。
从命令行编译时,沿着由INCLUDE环境变量指定的路径。
根据以上,两者的区别在于,当包含文件路径不是绝对路径时,有不同的搜索顺序。对于包含在双引号""中的包含文件,按以下顺序搜索:
1.在包含当前include指令的文件所在的文件夹中搜索;
2.如果在上一步中找不到,请在使用include指令之前打开的文件所在的文件夹中进行搜索。如果已经有多个包含的文件,按打开的相反顺序搜索它们;
3.如果上一步找不到,就在编译器设置的包含路径内搜索;
4.如果在上一步中找不到,请在系统的INCLUDE环境变量中进行搜索。
对于带尖括号的包含文件,搜索按以下顺序进行:
1.在编译器设置的包含路径中搜索;
2.如果它是在命令行中编译的,请在系统的INCLUDE环境变量中进行搜索。
当使用上述两个include命令搜索具有非绝对路径的文件时,一旦找到include命令指定的文件,编译器将停止搜索。但是如果包含的文件是绝对路径文件,比如# include d: program files opencv 1.0 cv include cv.h ,那么包含的cv . h文件路径就是绝对路径。在这种情况下,编译器直接据此给出的绝对路径就是一个搜索。
下面是一个使用尖括号include的例子:
#包含stdio.h
在这个例子中,我们在源代码中包含了stdio.h文件。因为使用了尖括号,所以当预处理程序进行搜索时,它首先在编译器设置的包含路径中进行搜索。如果找不到,它会在系统的include环境变量中进行搜索。
下面是一个使用双引号 include的例子:
#INCLUDE defs.h 在这个例子中,我们在源代码中包含了defs.h文件。因为使用了双引号“”,所以预处理程序会在此指令的父文件所在的文件夹中进行搜索。所谓的父文件就是这个include指令所在的文件。如果找不到,就在父文件的父文件所在的文件夹中搜索。如果还是找不到,就会包含在编译器设置里。