C/C++ code使用尖括号的话,编译时会先在系统include目录里搜索,如果找不到才会在源代码所在目录搜索;使用双引号则相反,会先在源代码目录里搜索。这就意味着,当系统里(如/usr/include/里)有一个叫做math.h的头文件,而你的源代码目录里也有一个你自己写的math.h头文件,那么使用尖括号时用的就是系统里的;而使用双引号的话则会使用你自己写的那个。
所以建议: 使用系统里提供的头文件时使用尖括号 使用自己编写的头文件时使用双引号。
Linux环境下的C++头文件搜索路径方式就是按照上面的方法来的。
但是,VS2005环境与与Linux环境的设定是有点不一样的!
在VS2005环境下,我们#include <自己的头文件> 会提示:
fatal error C1083: Cannot open include file: '******.h': No such file or directory
这是因为当编译器是这样来寻找这个头文件的: 先在系统include目录下查找,发现查找不到,然后在项目的#include目录下查找,发现也查找不到(因为VS2005环境默认的项目#include目录为空). 所以就会出现错误.
我们只要将项目的头文件搜索路径加入 "." (当前路径) 那么,就可以编译成功了.
#include <KnightDream.h> 这种写法就可以编译成功了。
总结一下:
#include <>的默认路径是系统头文件目录 其次是项目头文件路径(VS2005下默认为空)
#include " " 的默认路径是与CPP文件同目录的路径,还有项目头文件路径(VS2005下默认为空) , 其次才是系统头文件路径
这样一来,当我们#include "iostream" 的速度肯定比不上 #include
#include <KnightDream.h> 的速度肯定比不上 #include "knightDream.h" 的速度