#include指令加载外部库的两种用法

来源:互联网 发布:java中class的作用 编辑:程序博客网 时间:2024/06/06 08:23

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>