预处理器发现 #include 指令后,就会寻找后跟的文件名并把这个文件的内容包含到当前文件中。被包含文件中的文本将替换源代码文件中的#include指令,就像你把被包含文件中的全部内容键入到源文件中的这个位置一样。  
#include 指令有两种使用形式 
#include <stdio.h> 文件名放在尖括号中 
#include “mystuff.h” 文件名放在双引号中 
(1)尖括号< 和> 括起来表明这个文件是一个工程或标准头文件。

查找过程会检查预定义的目录,我们可以通过设置搜索路径环境变量或命令行选项来修改这些目录。

(2)如果文件名用一对引号括起来则表明该文件是用户提供的头文件,查找该  
      文件时将从当前文件目录(或文件名指定的其他目录)中寻找文件,然后再在标准位置寻找文件。  
为什么要包含文件呢? 
      因为这些文件包含了编译器所需的信息。例如,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 指示符常被用来判断一个预处理器常量是否已被定义以便有条件地包含程序代码。

http://www.cnblogs.com/yc_sunniwell/archive/2010/06/22/1762874.html

最新文章

  1. 0041 Java学习笔记-多线程-线程池、ForkJoinPool、ThreadLocal
  2. CSS初始化样式
  3. 特征的转换规则 Transfer Routione
  4. 测试环境下将centos6.8升级到centos7的操作记录(转)
  5. 初识 AutoLayout
  6. python爬虫学习(1)__抓取煎蛋图片
  7. 华为 oj 公共子串计算
  8. 使用CSC.EXE编译第一个HELLO WORLD
  9. Angular form
  10. linux 手动安装 oracle(转)
  11. 关于JAVA中split方法使用竖线异常的问题
  12. Codeforces Round #364 (Div. 2) D. As Fast As Possible
  13. mui对话框事件
  14. [Swift]LeetCode972.相等的有理数 | Equal Rational Numbers
  15. 集合 set
  16. Request.UrlReferrer注意点
  17. python批量操作Linux服务器脚本,ssh密码登录(执行命令、上传、下载)(一)
  18. Why should we typedef a struct so often in C? - Stack Overflow
  19. 为什么分布式一定要有redis?(转)
  20. 洛谷 P3952 时间复杂度 解题报告

热门文章

  1. 【 D3.js 高级系列 — 2.0 】 机械图 + 人物关系图
  2. HDU 1816, POJ 2723 Get Luffy Out(2-sat)
  3. TDM-GCC是从mingw-w64项目patch而来,全部使用静态链接,对线程不需要额外的DLL,默认使用SJLJ异常(真是好东西)
  4. C# WPF 多个window 相互覆盖的次序控制 不用topmost
  5. dotnet core 通过修改文件头的方式隐藏控制台窗口
  6. Linux四个常用的指挥机关处理具体的解释
  7. octopress第三方插件:博文同步工具syncPost
  8. Web 存储之localStorage
  9. WPF UserControl 的绑定事件、属性、附加属性
  10. 通过控制台查看电脑中.net framework的版本