c语言中include的使用方法

发布时间:2020-06-16 09:09:37

来源:亿速云

阅读:185

作者:Leah

这篇文章将为大家详细讲解有关c语言中include的使用方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1、#include 命令介绍

#include 命令是预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;

可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。

2、插入头文件的内容

#include 命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:#include

#include "文件名"

如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。如下例所示:#include // 一些数学函数的原型,以及相关的类型和宏

如果需要包含针对程序所开发的源文件,则应该使用第二种格式。采用 #include 命令所插入的文件,通常文件扩展名是 .h,文件包括函数原型、宏定义和类型定义。

只要使用 #include 命令,这些定义就可被任何源文件使用。如下例所示:

#include "myproject.h"         // 用在当前项目中的函数原型、类型定义和宏

你可以在 #include 命令中使用宏。如果使用宏,该宏的取代结果必须确保生成正确的 #include 命令。

例 1 展示了这样的 #include 命令。

【例1】在 #include 命令中的宏#ifdef _DEBUG_

#define MY_HEADER "myProject_dbg.h"

#else

#define MY_HEADER "myProject.h"

#endif

#include MY_HEADER

当上述程序代码进入预处理时,如果 DEBUG 宏已被定义,那么预处理器会插入 myProject_dbg.h 的内容;如果还没定义,则插入 myProject.h 的内容。

3、预处理器如何找到头文件

由给定的 C 语言实现版本决定 #include 命令所指定文件的搜索路径。同时,也由实现版本决定文件名是否区分大小写。对于命令中使用尖括号指定的文件(),预处理器通常会在特定的系统路径下搜索,例如,在 Unix 系统中,会搜索路径 /usr/local/include 与 /usr/include。

对于命令中用双引号指定的文件("文件名"),预处理器通常首先在当前目录下寻找,也就是包含该程序其他源文件的目录。如果在当前目录下没有找到,那么预处理器也会搜索系统的 include 路径。文件名中可以包含路径。但如果文件名中包含了路径,则预处理器只会到该目录下寻找。

你也可以通过使用编译器命令行选项,或在环境变量(该变量通常称为 INCLUDE)中加入搜索路径,为 #include 命令指定自己的搜索路径。具体的做法请参考采用的编译器的说明文档。

4、嵌套的 #include 命令

#include 命令可以嵌套使用;也就是说,通过 #include 命令插入的源文件本身也可以包含另一个 #include 命令。预处理器最多允许 15 层的嵌套包含。

因为头文件有时候会包含另一个头文件,很容易发生相同的一个文件被多次包含的情况。例如,假设文件 myProject.h 中包含如下代码:#include

如果源文件包含下面的 #include 命令,就会两次包含 stdio.h,一次是直接包含,另一次是间接包含:#include

#include "myProject.h"

然而,可以采用条件式编译的命令,方便地避免多次包含相同的文件。例 2 使用了这个技巧。

【例2】避免多次包含#ifndef INCFILE_H_

#define INCFILE_H_

/* ...实际的头文件incfile.h的内容写在这里... */

#endif /* INCFILE_H_ */

第一次出现包含 incfile.h 的命令时,INCFILE_H_ 宏是没有定义的。预处理器因此插入 #ifndef 和 #endif 之间的内容,这段内容包含了对 INCFILE_H_ 宏的定义。嵌入 incfile.h 文件之后,#ifndef 条件就会为 false,预处理器会忽略 #ifndef 和 #endif 之间的内容。

关于c语言中include的使用方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

c语言include不起作用,c语言中include的使用方法相关推荐

  1. c语言里void什么作用,c语言中void的含义是什么?如何使用?

    c语言中void的含义是什么?如何使用? 发布时间:2020-04-26 14:08:27 来源:亿速云 阅读:416 作者:小新 c语言中void的含义是什么?如何使用?相信有很多人都不太了解,今天 ...

  2. c语言eof不起作用,c语言中EOF的用法

    c语言中EOF的用法以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! c语言中EOF的用法 1.EOF是end of fi ...

  3. c语言char有什么作用,C语言中char*和char[]用法区别分析

    本文实例分析了C语言中char* 和 char []的区别.分享给大家供大家参考之用.具体分析如下: 一般来说,很多人会觉得这两个定义效果一样,其实差别很大.以下是个人的一些看法,有不正确的地方望指正 ...

  4. c语言里void什么作用,C语言中void是什么意思?

    C语言中void是什么意思? C语言中"void"表示为无类型,相应的"void *"为无类型指针,常用在程序编写中对定义函数的参数类型.返回值.函数中指针类型 ...

  5. c语言put语句的作用,C语言中put()与puts()的区别?

    C语言中put()与puts()的区别? 关注:275  答案:2  mip版 解决时间 2021-02-04 15:47 提问者笑低了眉眼 2021-02-04 12:42 C语言中put()与pu ...

  6. c语言time函数的作用,c语言中time函数的用法

    c语言中time函数的用法 c语言中time函数的用法的用法你知道吗?下面应届毕业生小编就跟你们详细介绍下c语言中time函数的用法的用法,希望对你们有用. c语言中time函数的用法的用法如下: 头 ...

  7. c语言printf函数的作用,c语言中printf用法及其函数定义

    c语言中printf用法及其函数定义 发布时间:2020-04-09 10:51:14 来源:亿速云 阅读:354 作者:小新 今天小编给大家分享的是c语言中printf用法及其函数定义,很多人都不太 ...

  8. c语言getchar函数的作用,c语言中getchar的用法函数用法

    当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止.下面小编就跟你们详细介绍下c语言中getchar的用法,希望对你们有用. c语言中getchar ...

  9. c语言箭头指针的作用,C语言中,结构体成员变量的点和箭头

    C语言中,调用成员变量用点还是用箭头,取决于当前的ID是指针还是结构体本身. 如:typedef struct { float height; float weight; } Person; int  ...

最新文章

  1. 根据传入坐标和图片URL地址对图片进行切图操作、将图片转化成Base64位码
  2. python中newfile是干嘛用的_python 文件操作方法
  3. linux 下安装nginx
  4. 科大星云诗社动态20210509
  5. jpa 自定义sql if_mybatis仿jpa 使用@createDate @updateDate
  6. PostgreSQL 10.1 手册_部分 II. SQL 语言_第 5 章 数据定义_5.5. 修改表
  7. 【Python CheckiO 题解】Between Markers (simplified)
  8. php里面的 n算是,用PHP中的bcmath计算第N个根
  9. 201621123003《Java程序设计》第一周学习总结
  10. USACO3.22Stringsobits
  11. 网络编程学习记录-1
  12. 境外WiFi市场持续升温2016年或迎普及元年
  13. Java 核心内容相关面试题【3】
  14. c语言windows程序设计pdf下载,windows程序设计第7版(windows程序设计第7版珍藏版) pdf...
  15. 克隆虚拟机后的IP、路由配置以及mac地址冲突解决
  16. 徙步藏东南不是江南胜似江南
  17. 策略模式(用策略模式实现我们淘宝,京东,美团等等简易满减活动)
  18. 什么是ISO 21434?给汽车软件开发人员的合规贴士
  19. GitHub 忘记SSH密钥
  20. vue渲染动态渲染图片_动态/动态渲染视频和音频

热门文章

  1. linux 编辑文件软件,Linux文本处理工具及Vim编辑器
  2. 电磁铁的方向判定方法
  3. 乖离水机器人攻略_乖离性百万亚瑟王超弩幽蓝机器人攻略打法
  4. python给成绩表加上姓名列_Python数据分析基础练习
  5. 靶机渗透练习54-digitalworld.local:DEVELOPMENT
  6. iphone维修-iPhone面容ID进水直接报废,无法维修
  7. 捷联惯导圆锥误差补偿--读书笔记
  8. 云应用系统开发技术考点(面试题相关)
  9. 软件数据加密技术概念分类
  10. 掌握这2个小技巧,让你轻松学会手机拍照计算数量