+ -
当前位置:首页 → 问答吧 → #include的用法

#include的用法

时间:2008-09-24

来源:互联网

#include包含文件有两种方式,一:<> 另一种是:“”,在执行时,编译器是怎样查找文件路径的?请详细点。谢谢。

作者: sf417588322   发布时间: 2008-09-24

编译器怎么查找文件路径?

作者: jillnicky   发布时间: 2008-09-24

先检查 <>的吧, 然后再找 "" 的,只能说这么多,再深一点也不懂了

作者: Sangle   发布时间: 2008-09-24

采用"":依次搜索当前目录、包括/I编译开关的路径、包括INCLUDE环境变量的路径  
采用<>:依次搜索包括/I编译开关的路径、包括INCLUDE环境变量的路径

作者: xkyx_cn   发布时间: 2008-09-24

对于#include <filename.h> ,编译器从标准库路径开始搜索 
对于#include “filename.h” ,编译器从用户的工作路径开始搜索
一般自己写的.h在工作目录,所以就用引号,节省搜索时间

作者: devil_zuiai   发布时间: 2008-09-24

用“”只是在当前工程目录下查找,
用<>是首先在当前工程目录下查找,如果找不到,就到path环境变量里找!(也就是安装路径)

作者: hqin6   发布时间: 2008-09-24

<>: 编译器按照PATH的路径查找所包含的文件.
"": 编译器先查找当前目录下看是否有所需文件,如果没有再去PATH找.

作者: realdragon2   发布时间: 2008-09-24

引用 5 楼 hqin6 的回复:
用“”只是在当前工程目录下查找,
用 <>是首先在当前工程目录下查找,如果找不到,就到path环境变量里找!(也就是安装路径)


up

作者: skyering   发布时间: 2008-09-24

一般来说,包含标准库最好用<>,包含自己定义的头文件最好用" "

作者: biaozai06   发布时间: 2008-09-24

C/C++ code
 

使用尖括号的话,编译时会先在系统include目录里搜索,如果找不到才会在源代码所在目录搜索;使用双引号则相反,会先在源代码目录里搜索。这就意味着,当系统里(如/usr/include/里)有一个叫做math.h的头文件,而你的源代码目录里也有一个你自己写的math.h头文件,那么使用尖括号时用的就是系统里的;而使用双引号的话则会使用你自己写的那个。


所以建议: 使用系统里提供的头文件时使用尖括号
使用自己编写的头文件时使用双引号


作者: hqin6   发布时间: 2008-09-24

<>一般用于库头文件
“”一般用于自定义头文件

作者: taojian_hhu   发布时间: 2008-09-24

对于#include <filename.h> ,编译器从标准库路径开始搜索 
对于#include “filename.h” ,编译器从用户的工作路径开始搜索

作者: dota_1234   发布时间: 2008-09-24

对于#include <filename.h> ,编译器从标准库路径开始搜索 就是到path路径里找
对于#include “filename.h” ,编译器从用户的工作路径开始搜索
一般自己写的.h在工作目录,所以就用引号,节省搜索时间

作者: xzdwfwt111   发布时间: 2008-09-24

引用 3 楼 xkyx_cn 的回复:
采用"":依次搜索当前目录、包括/I编译开关的路径、包括INCLUDE环境变量的路径
采用 <>:依次搜索包括/I编译开关的路径、包括INCLUDE环境变量的路径

o(∩_∩)o...

作者: jillnicky   发布时间: 2008-09-24

引用 5 楼 hqin6 的回复:
用“”只是在当前工程目录下查找,
用 <>是首先在当前工程目录下查找,如果找不到,就到path环境变量里找!(也就是安装路径)

对头

作者: xuanweizi0612   发布时间: 2008-09-24

进来学习的。

作者: alaboshuzhi   发布时间: 2008-09-24

对于#include <filename.h> ,编译器从标准库路径开始搜索 
对于#include “filename.h” ,编译器从用户的工作路径开始搜索,查不到再在标准库查找。
一般自己写的.h在工作目录,所以就用引号,节省搜索时间

作者: sw_yu   发布时间: 2008-09-24

除了up我只有UP

作者: bm1408   发布时间: 2008-09-24

"”只是在当前工程目录下查找 
<>是首先在当前工程目录下查找,如果找不到,就到path环境变量里找 

作者: kkndciapp   发布时间: 2008-09-24

书上都写了,楼主完全可以在书上找到,而且说的很详细.

作者: zgjxwl   发布时间: 2008-09-24

学习了,原以为这两种表示方法一样的呢!

作者: terminatorbin   发布时间: 2008-09-24

UP

作者: xianyuxiaoqiang   发布时间: 2008-09-26

"" 优先找你自己写的.h
<> 优先系统

作者: jakky520   发布时间: 2008-09-26

采用"":依次搜索当前目录、包括/I编译开关的路径、包括INCLUDE环境变量的路  
采用 <>:依次搜索包括/I编译开关的路径、包括INCLUDE环境变量的路径

简单点说,如果楼主想引用的是标准库函数的内容,用<>就可以。
如果想引用自己定义的或者其他第三方文件则要用“”。

作者: pingzi_1119   发布时间: 2008-09-26

"" 比较快点

作者: liufabin   发布时间: 2008-09-26

多看看书,

作者: pegliu   发布时间: 2008-09-26

引用 23 楼 pingzi_1119 的回复:
采用"":依次搜索当前目录、包括/I编译开关的路径、包括INCLUDE环境变量的路
采用 <>:依次搜索包括/I编译开关的路径、包括INCLUDE环境变量的路径

简单点说,如果楼主想引用的是标准库函数的内容,用 <>就可以。
如果想引用自己定义的或者其他第三方文件则要用“”。


就这样!

作者: backway   发布时间: 2008-09-26

明白了,谢谢

作者: ARESK   发布时间: 2008-09-26

说明白点吧。
用<>的时候,就是只查找系统规定的目录中的头文件。用""的时候,系统会先找源文件所在目录中有没有这个头文件,有过没有再找系统规定的目录。

作者: Teaerror   发布时间: 2008-09-26

对于#include <filename.h> ,编译器从标准库路径开始搜索 
对于#include “filename.h” ,编译器从用户的工作路径开始搜索,查不到再在标准库查找。 
一般自己写的.h在工作目录,所以就用引号,节省搜索时间

作者: cxxer   发布时间: 2008-10-10

#include<>从编译器从标准库INCLUDE文件开始搜索 
#include “ ”从当前工作路径开始搜索,未查到再在标准库查找
如果你自己的文件在"c:\ABC"下,你可以这样写#include"c:\ABC"。

作者: HotHat   发布时间: 2008-10-12

引用 3 楼 xkyx_cn 的回复:
采用"":依次搜索当前目录、包括/I编译开关的路径、包括INCLUDE环境变量的路径
采用 <>:依次搜索包括/I编译开关的路径、包括INCLUDE环境变量的路径

正解

作者: frank_ll   发布时间: 2008-10-12

但凡C/C++的编译,都有路径这么一个概念(编译器.exe所在路径PATH,头文件所在路径INCLUDE_PATH,库文件所在路径LIB_PATH),这里的问题,跟INCLUDE_PATH有关.

作者: ForestDB   发布时间: 2008-10-12

好象这两个都一样吧?

作者: xiaoliang_c   发布时间: 2008-10-13

<>是系统提供的头文件
""是由用户自定义的,可以是头文件,还可以是其它源文件.

作者: z_ming2005   发布时间: 2008-10-13

UPUPUPUPUP

作者: zjf30366   发布时间: 2008-10-18

引用 16 楼 sw_yu 的回复:
对于#include <filename.h> ,编译器从标准库路径开始搜索
对于#include “filename.h” ,编译器从用户的工作路径开始搜索,查不到再在标准库查找。
一般自己写的.h在工作目录,所以就用引号,节省搜索时间

up

作者: allanqyz   发布时间: 2008-10-18

引用 1 楼 jillnicky 的回复:
编译器怎么查找文件路径?


这个是错的 


#include <>从编译器从标准库INCLUDE文件开始搜索 
#include “ ”从当前工作路径开始搜索,未查到再在标准库查找 

这个才是对的


作者: czbever   发布时间: 2008-10-18

学到东西啦

作者: a6369508   发布时间: 2010-06-21

"" 从程序当前目录开始搜索 然后搜索系统目录
<> 直接从系统目录找起

作者: jianuMan   发布时间: 2010-06-22

"" 这个是先从自己的当前目录下开始查找,如果没有,再从安装库里查找

<>这个直接从安装库里查找

作者: china_west   发布时间: 2010-06-22

引用 4 楼 devil_zuiai 的回复:
对于#include <filename.h> ,编译器从标准库路径开始搜索
对于#include “filename.h” ,编译器从用户的工作路径开始搜索
一般自己写的.h在工作目录,所以就用引号,节省搜索时间


up

作者: ykhufuhai   发布时间: 2010-06-22

还有一个大家是否知道,要在你工具中定义清晰除了系统目录外,还有你的用户目录,否则会搜索不到

作者: orient_hwa   发布时间: 2010-06-22

"" 这个是先从自己的当前目录下开始查找,如果没有,再从安装库里查找

<>这个直接从安装库里查找

作者: bobo364   发布时间: 2010-06-22

采用"":依次搜索当前目录、包括/I编译开关的路径、包括INCLUDE环境变量的路径  
采用<>:依次搜索包括/I编译开关的路径、包括INCLUDE环境变量的路径

作者: yiruirui0507   发布时间: 2010-06-22

引用 9 楼 hqin6 的回复:
C/C++ code


使用尖括号的话,编译时会先在系统include目录里搜索,如果找不到才会在源代码所在目录搜索;使用双引号则相反,会先在源代码目录里搜索。这就意味着,当系统里(如/usr/include/里)有一个叫做math.h的头文件,而你的源代码目录里也有一个你自己写的math.h头文件,那么使用尖括号时用的就是系统里的;而使用双引号的话则会使用你自己写的那个。
……

呃..........
这个学习了!

作者: hhbgk   发布时间: 2010-06-22

看了不少人的回复, 都没有回复完全, 不过综合起来就差不多了

作者: elpase   发布时间: 2010-06-22

UP.基础且经典.

作者: yanqingluo_nanjing   发布时间: 2011-11-25

真的是经典!!!

作者: yuefy520   发布时间: 2011-12-27

醍醐灌顶!!!

作者: upsate   发布时间: 2011-12-27

简单点:“”是从本地目录里找头文件,<>是从系统目录中找头文件。

作者: wenxingone   发布时间: 2011-12-27