#include中用双引号和用尖括号括起来头文件的区别

双引号表示 先在 程序源文件所在目录查找,如果未找到则去系统默认目录查找,通常用于包含程序作者编写的头文件;
尖括号表示只在系统默认目录或者括号内的路径查找, 通常用于包含系统中自带的头文件 ;

尖括号:
在包含文件目录中去查找(包含目录是由用户在设置环境时设置的),而不在源文件目录去查找;
双引号:
首先在当前的源文件目录中查找,若未找到才到包含目录中去查找
//双引号头文件的搜索范围比尖括号的搜索范围更广。

详解:

  预处理器发现   #include   指令后,就会寻找后跟的文件名并把这个文件的内容包含到当前文件中。被包含文件中的文本将替换源代码文件中的#include指令,就像你把被包含文件中的全部内容键入到源文件中的这个位置一样。  
  #include   指令有两种使用形式  
  #include   <stdio.h> 文件名放在尖括号中  
  #include   “mystuff.h” 文件名放在双引号中  
   
  尖括号<   和>   括起来表明这个文件是一个工程或标准头文件。查找过程会检查预定义的目录,我们可以通过设置搜索路径环境变量或命令行选项来修改这些目录。  
  如果文件名用一对引号括起来则表明该文件是用户提供的头文件,查找该文件时将从当前文件目录(或文件名指定的其他目录)中寻找文件,然后再在标准位置寻找文件。      
  为什么要包含文件呢?  
  因为这些文件包含了编译器所需的信息。例如,stdio.h文件通常包含EOF,NULL,  
  getchar()和putchar()的定义。  
  包含大型头文件并不一定显著增加程序的大小。很多情况下,头文件中的内容是编译器产生最终代码所需的信息,而不是加到最终代码里的具体语句。        
  被包含的文件还可以含有#include 指示符,由于嵌套包含文件的原因,一个头文件可能会被多次包含在一个源文件中,条件指示符可防止这种头文件的重复处理。  
  例如:  
  #ifndef   BOOKSTORE_H  
  #define   BOOKSTORE_H  
   
   
   
  #endif  
  条件指示符#ifndef  检查BOOKSTORE_H  在前面是否已经被定义,这里BOOKSTORE_H是一个预编译器常量习惯上预编译器常量往往被写成大写字母,如BOOKSTORE_H在前面没有被定义,则条件指示符的值为真于是从#ifndef   到#endif   之间的所有语句都被包含进来进行处理。相反,如果#ifndef   指示符的值为假则它与#endif  指示符之间的行将被忽略,为了保证头文件只被处理一次,把如下#define 指示符  
  #define   BOOKSTORE_H  
  放在#ifndef 后面,这样在头文件的内容第一次被处理时,BOOKSTORE_H   将被定义  
  从而防止了在程序文本文件中以后#ifndef指示符的值为真。  
  只要不存在两个必须包含的头文件要检查一个同名的预处理器常量这样的情形,这个策略就能够很好地运作。#ifdef 指示符常被用来判断一个预处理器常量是否已被定义以便有条件地包含程序代码。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值