7.1.25文件包含

文件包含是C语言预处理的另一个重要功能,用“#include”来实现,将一个源文件的全部内容包含到另一个源文件中,成为它的一个部分,文件包含的一般格式为:

#include 或者#include “文件名”

两种形式的区别在于:使用尖括号表示在系统头文件目录中查找(由用户在设置编程环境时设置),而不在源文件目录中查找。使用双引号则表示首先在当前的源文件目录中查找,找不到再到系统头文件目录中查找。

演示代码如下图所示:

1、程序的头文件1.h

2、程序的主题main()函数

3、运行结果如下:

补充:“”可以代替所有的<>,反过来却不可以。

文件目录包含简介

7.1.26文件包含

1、一条include命令只能指定一个被包含文件,若有多个文件要包含,则需用多个include命令。

例如:

h   2.h需要分别包含。

这样写include 语句:#include   “m1.h,m2.h” 或#include   “m1.h”,”m2.h”

而必须写成:#include   “m1.h”   #include   “m2.h”

2、文件包含允许嵌套,即在一个被包含的文件中又可以包含另一个文件。

下面代码为1.h包含2.h..。Main

函数包含2.h,这样1.h和2.h都包含了

3、文件包含语句中被包含的文件通常是以.h 结尾的头文件,这种头文件中的内容多为变量的定义、类型定义、宏定义、函数的定义或说明,但被包含的文件也可以是以.c为扩展名的C语言源文件。

Include不仅包含头文件.h,也可以包含.c源文件

注意:避免重定义现象。

7.1.27条件编译

通过某些条件,控制源程序中的某段源代码是否参加编译,这就是条件编译的功能,一般来说,所有源文件中的代码都应参加编译,但有时候希望某部分代码不参加编译,应用条件编译可达到这以目的。

第一种:

条件编译示例代码演示

运行结果如下:

第二种:

条件编译示例演示主要代码

M未被定义时:

执行结果:

定义M之后,代码如下:

执行结果:

没有关机,执行取消。

7.1.28编译及预处理小节

讨论C语言程序编译及预处理的相关内容,C程序的编译分编辑、预处理、编译和链接几个步骤,预处理指令是由预处理器负责执行的,主要有头文件包含、宏定义、条件编译等,经过预处理后,编译器才开始工作,将每个编译单元编译成二进制代码文件,但此时分散的二进制代码文件中的变量和函数没有分配到具体内存地址,因而不能执行,需要链接器将这些二进制代码文件、用到的库文件中相关代码,系统相关的信息组合起来,形成二进制可执行文件。

掌握程序编译链接的过程能帮助理解错误的根源,提高调试的效率,是写出高质量代码的必要条件。

c语言条件编译include,7.1编译与预处理-include-c学习 | 时刻需相关推荐

  1. c语言JSON库 Parson的编译和使用

    c语言JSON库 Parson的编译和使用 最近一直学习ndk,Android肯定会用到json,这里介绍一个c语言写成的JSON解析库 Parson介绍 Parson is a lighweight ...

  2. C语言条件编译及编译预处理阶段

    一.C语言由源代码生成的各阶段如下: C源程序->编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件 其中 编译预处理阶段,读取c源程序,对其中的 ...

  3. c语言中条件编译相关的预编译指令

     一. 内容概述 本文主要介绍c语言中条件编译相关的预编译指令,包括#define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. 二. ...

  4. c语言条件编译的例子,C语言条件编译分析实例

    C语言条件编译分析实例 1.利用#ifdef / #endif 将程序功能模块包括进去,以向某用户提供该功能. 在程序首部定义#define HNLD: #ifdef HNLD include&quo ...

  5. c语言 条件编译注释,c语言的预处理/条件编译,最全整理看这里

    ​语言的编译过程中第一步进行的就是预编译了,预编译中就是执行#开头的语句,这些处理就是本篇总结的知识点,预处理和条件编译. 通俗的讲预处理就是编译器自动的帮我们上去整理一遍代码,它依据的规则(我们交代 ...

  6. c语言常用的条件编译,C语言条件编译

    使用与平台有关的C语言函数,可能会使得程序不具有可移植性.比如Socket编程.多线程编程等是与平台有关的. 若想将程序做成平台无关的就需要用到与平台相关的条件编译. 编译器 GCC #ifdef _ ...

  7. C语言程序设计 | 程序编译与预处理

    目录 一.程序的翻译环境和执行环境 二.详解编译+链接 1.翻译环境 2.编译 2.1预编译/预处理 2.2编译 2.3汇编 三.预处理详解 1.预定义符号 2.#define 2.1#define定 ...

  8. C语言 条件编译详解

    预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器.可见预处理过程先于编译器对源代码进行处理. 在C 语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件.定义宏. ...

  9. ios上编译c语言的app,iOS App编译流程

    三大编译器详解GCC / Clang / LLVM 传统的编译器通常分为三个部分,前端(frontEnd),优化器(Optimizer)和后端(backEnd).在编译过程中,前端主要负责词法和语法分 ...

最新文章

  1. Haskell 差点儿无痛苦上手指南
  2. Android中Toast的用法简介
  3. 爬虫 spider08——爬取腾讯娱乐新闻【使用redis去重】
  4. CF889E-Mod Mod Mod【dp】
  5. NYOJ_37_回文字符串
  6. PHP动态验证,php-动态更改验证规则
  7. java mvc数据库 封装_关于SpringMvc参数封装_JavaEE框架(Maven+SpringMvc+Spring+MyBatis)全程实战教程_Java视频-51CTO学院...
  8. 中国恒大:半个月网上售房近10万套 认购金额1026.7亿元
  9. 使用C#向ACCESS中插入数据
  10. wps怎么在中文后面加数字_怎样给wps底部加上页面数字 - 卡饭网
  11. 马尔科夫模型 Markov Model
  12. TCP和UDP的区别
  13. Excel自定义格式详解
  14. Drain基于固定深度解析树
  15. Python的门面担当 - Tkinter
  16. 关于基线长度对双天线GNSS测姿精度的影响
  17. 计算机缩写术语完全介绍 By 001pc @ 1997.10.1-2004-6-12
  18. 单片机按键设计的四个方案
  19. 2013年03月05日
  20. 安装python3.7后报错No module named ‘ufw‘

热门文章

  1. IntelliJ IDEA下的使用git
  2. 原生开发小程序 和 wepy 、 mpvue 对比
  3. 神经网络不学习的原因
  4. python 类不实例化方法:@staticmethod或@classmethod
  5. Matlab面向对象编程
  6. Hibernate 一对一外键单向关联
  7. 更改eclipse中jsp默认编码格式为UTF-8
  8. iOS开发UI篇—核心动画(基础动画)
  9. Office2007打开文件提示“您尝试打开的文件xxx.xls的格式与文件扩展名指定的格式不一致”的解决办法...
  10. SpringMVC图片上传与显示