C语言中中可以通过#include <stdio.h>和#include "stidio.h",区别是:
#include <stdio.h>,直接到系统指定目录去查找头文件。
#include "stidio.h",会先到当前目录查找头文件,如果没找到在到系统指定目录查找。
C++中类似, 区别在于
C++中尖括号一般用户标准库头文件,而引号用于用户自己头文件
gcc编译时查找头文件,按照以下路径顺序查找:
1. gcc编译时,可以设置-I选项以指定头文件的搜索路径,如果指定多个路径,则按照顺序依次查找。比如,
- gcc -I /usr/local/include/node a.c
2. gcc会查找环境变量C_INCLUDE_PATH,CPLUS_INCLUDE_PATH中指定的路径。
3. 系统默认的路径,分别是/usr/include,/usr/local/include,/usr/lib/gcc-lib/i386-linux/2.95.2/include(gcc库文件的路径,各个系统不一致)。
同时,include也可以采用相对路径,比如,a.c需要包含/usr/local/include/node/v8.h,由于/usr/local/include是系统的默认搜索路径,所以在a.c中可以用相对路径包含,#include<node/v8.h>。
Linux 下C 和C++的头文件都可以在/usr/include 路径下找到
Ubuntu 系统上测试结果如下:
C的头文件(/usr/include):
C++ 的标准库头文件在/usr/include/c++/4.8.2 路径下
(我的Ubuntu14.2 机器上 /usr/include/c++ 下有两个c++ 标准库文件的版本,一个为4.8,一个为4.8.2)