C中可以通过#include <header.h>
和#include "header.h"
来加载文件,两者的区别主要是在include加载的搜索路径上存在不同。
区别是:
采用#include <header.h>
,链接器会按照系统指定目录(如Windows下给INCLUDE环境变量指定的路径顺序)去查找头文件<header.h>
。
采用#include "header.h"
方式,链接器会先到当前目录查找头文件header.h
,如果没找到,才会在到系统指定目录查找。
所以在Windows下如果想使用#include <own_iostream>
需要将own_iostream
文件拷贝到环境变量INCLUDE的路径下,如我的电脑中采用的INCLUDE=“xxx\VS2010\VC\include”,则需要将相应文件拷贝到该路径下。如果是自定义的库文件,一般建议是采用相对路径`#include “own_iostream”在当前目录下搜索。
在Linux系统下,使用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/ownLib/header.h
,由于/usr/local/include
是系统的默认搜索路径,所以在a.c中可以用相对路径包含,#include <ownLib/header.h>
。