C语言程序设计(07776-1)第11章编译预处理课案.ppt

第11章 编译预处理 主要内容 宏定义 文件包含 条件编译 程序案例 小结 习题 11-1 宏定义 不带参数的宏定义 带参数的宏定义 终止宏定义 11-1-1 不带参数的宏定义 不带参数的宏定义是用一个简单得名字代替一个长的字符串,语句的一般格式为:#define 符号常量名 字符串 其中,符号常量名称为“宏名”,这种宏定义的作用是:在该宏定义之后的源程序中、在程序结束或取消宏定义之前,除了注释和字符串常量之外的所有出现被定义的符号常量的地方,均用宏定义的字符串来代替。宏名一般用大写字母来表示,以便与变量名相区别。但这并非规定,实际上也可用小写字母。 11-1-2 带参数的宏定义 宏定义不仅只能进行简单的字符串替换,还能进行参数替换。其一般形式为:#define 宏名(参数表) 字符串 其中,“字符串”包含有括号中指定的参数。 11-1-3 终止宏定义 宏命令#undef用于终止宏定义的作用域,一般形式为:#undef 宏名 11-2 文件包含 所谓“文件包含”处理是指将一个源文件的全部内容包含进来,成为当前文件的一部分。文件包含预处理命令的一般形式为:#include 或 #include "文件名" 标准头文件 11-3 条件编译 #if、#else、#endif的运用 带有#elif的条件编译 #ifdef的运用 #ifndef的运用 #if、#else、#endif的运用 定义的一般形式为: #if 表达式1 程序段1 #else表达式2 程序段2 #endif 它的作用是当指定的表达式为真(非零)时编译程序段1,否则编译程序段2。可以事先给定一定条件,使程序在不同的条件下执行不同的功能。 带有#elif的条件编译 定义的一般形式为: #if 表达式1 程序段1 #elif 表达式2 程序段2 #elif 表达式3 程序段3 … #else 程序段n #endif 接上 这里的#elif的含义是“else if”,该命令的功能是如果表达式1的值为真,则编译程序段1;否则,如果表达式2的值为真,编译程序段2;如果所有表达式的值为假,则编译程序段n。也可以没有#else部分,如所有表达式的值为假,则此命令中没有程序段被编译。 #ifdef的运用 定义的一般形式为: #ifdef 标识符 程序段1 #else 程序段2 #endif 接上 它的作用是当所指定的标识符已经被#define命令定义过,则在程序编译阶段只编译程序段1,否则编译程序段2。其中#else部分可以没有,即: #ifdef 标识符 程序段1 #endif 其中,“程序段”指语句组或命令行。 #ifndef的运用 定义的一般形式为: #ifndef 标识符 程序段1 #else 程序段2 #endif 它的作用是若标识符未被定义,则编译程序段1,否则编译程序段2。 11-4 程序案例 【例】输入一个口令,根据需要设置条件编译,使之在调试程序时,按原码输出;在使用时输出“*”号。 #include #define DEBUG void main() { char pass[80]; int i=1; printf("Please input password:"); do{i++; 接上 pass[i]=getchar(); #ifdef DEBUG putchar(pass[i]); #else putchar('*'); #endif }while(pass[i]!='\n'); } 11-5 小结 C语言的宏定义可以分为两种形式:一种是带参数的宏定义;另一种是不带参数的宏定义。 无参宏是用一个简单的名字代替一个长的字符串。 除了简单的宏定义以外,C预处理程序还允许定义带参数的宏。进行预处理时,不仅对定义的宏名进行宏替换,而且进行参数替换。其中,字符串中应该包含在参数表中所指定的参数。 所谓文件包含预处理,是指在一个文件中将另外一个文件的全部内容包含进来的处理过程,即将另外的文件包含到本文件中。C语言中,编译预处理命令#include实现包含操作,文件包含命令的功能是,在对源程序进行编译之前,用包含文件的内容取代该文件包含预处理语句。 一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只有在满足一定条件下才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。 条件编译的几种形式如下 #if、#else、#endif的运用 定义的一般形式为: #if 表达式1 程序段1 #else表达式2 程序段2 #endif 其功能是当表达式的值为真(非零)时,则编译程序段1,否

0与1c语言编译,C语言程序设计(07776-1)第11章编译预处理课案.ppt相关推荐

  1. 菱形图案c语言程序,C语言程序设计,做一个菱形图案

    C语言程序设计,做一个菱形图案 答案:4  信息版本:手机版 解决时间 2019-10-03 02:06 已解决 2019-10-02 09:41 这个题的做法   最佳答案 2019-10-02 ...

  2. dac梯形波c语言编程,单片机项目第11章单片机与AD接口.ppt-资源下载在线文库www.lddoc.cn...

    单片机项目第11章 单片机与AD接口.ppt 第11章 单片机与AD接口,11.1 项目内容数字电压表的设计 11.2 程序设计 11.3 相关知识,11.1 项目内容数字电压表的设计,11.1.1 ...

  3. c语言编写的每个函数都可以进行独立的编译,2017年辽宁师范大学计算机与信息技术学院836C语言程序设计考研冲刺密押题...

    一.选择题 1. 以下叙述中错误的是( ). A.C 语言编写的函数源程序,其文件名后缀可以是.C B.C 语言编写的函数都可以作为一个独立的源程序文件 C.C 语言编写的每个函数都可以进行独立的编译 ...

  4. 编译原理 --- 高级程序设计语言概述

    第一部分 --- 程序设计语言的定义 一个程序设计语言一般有三个定义:1.语法:2.语义:3.语用 在编译原理这门课中我们主要考虑语法和语义这两个定义 1.程序本质上是一定字符集合上的字符串,但是字符 ...

  5. 汪升华c语言答案,C语言程序设计教程/普通高等教育“十二五”规划教材

    <C语言程序设计教程/普通高等教育"十二五"规划教材>从实用的角度出发,详细介绍了开发环境VisualC++6.0和TurboC2.0的使用方法,全部例题均在此环境中成 ...

  6. 编译原理——语言处理程序

    概况 程序语言是为了书写计算机程序而人为设计的符号,用于对计算过程进行描写叙述.组织和推导,程序语言分为低级语言和高级语言,低级语言包含计算机硬件能识别的由0.1组成的机器指令语言和用符号组成的指令语 ...

  7. python语言与c语言相比在分支结构上有什么不同_大工20春 C/C 语言程序设计 在线作业3 - 百度文库...

    大工20春<CC++语言程序设计>在线作业3答案 大工20春<C/C++语言程序设计>在线作业3 红字部分为答案! 单选题 1.C语言中,下列合法的字符型常量是(). A.&q ...

  8. linux c语言编程内嵌汇编,gcc编译c语言中内嵌汇编

    gcc编译c语言中内嵌汇编 --AT&T and Intel 汇编语法对照 寄存器命名: AT&T:  %eax Intel: eax AT&T 语法源地址在左侧,目的地址在右 ...

  9. 大学 C语言程序设计第一讲,c语言程序设计1第一讲(第一章上).ppt

    c语言程序设计1第一讲(第一章上).ppt 知识可以改变命运! 高级语言程序设计 主讲教师:贾彩燕 计算机与信息技术学院 计算机科学与技术系 cyjia@bjtu.edu.cn 计算机与人沟通 计算机 ...

最新文章

  1. 清除浏览器缓存之后为什么还是显示旧的html页面_Web缓存知识
  2. Oracle-Listener log解读
  3. 数据处理踩过的坑(不断更新):
  4. MFC中获取任务栏大小
  5. 微信jssdk开发,PHP,必要步骤
  6. contenttype添加field
  7. Atitit 收入理论大总结 4位一体 4象限理论 财政收入理论 6位一体
  8. 装逼技能:怎样优雅地摆放桌面图标?
  9. QT 自定义日历插件
  10. Flask接口服务处理全局异常
  11. 计算机慢怎么解决6,电脑运行速度慢怎么回事 电脑运行速度慢的解决方法
  12. 《精益创业》读书笔记
  13. 李白关于鸿蒙的诗,名诗欣赏:李白《把酒问月》之--青天有月来几时
  14. arXiv每日推荐-5.9:计算机视觉/图像处理每日论文速递
  15. 互联网最新创新创业项目
  16. 网易免费邮箱的smtp 为何密码错误
  17. 第 20 章 Document Tools
  18. 花花野公子 - 野行之~昆明大理
  19. java中Keytool生成证书
  20. 软考信息系统项目管理师论文真题及答案

热门文章

  1. PingCode 3.0 发布,开启国产研发自动化时代
  2. 如何在电脑中配置jdk环境变量
  3. 7.某计算机的控制器采用微程序控制方式,微指令中的操作控制字段的16位采用混合表示法,其中用11位采用直接表示法,另外5位分为3位和2位的编码表示法,则此格式的微指令最多可表示多少个微指令?
  4. 【swjtu】数据结构实验5_基于十字链表的稀疏矩阵转置
  5. 【LeetCode | 二叉树前、中、后序遍历{迭代法}实现】
  6. 重磅!单目深度估计方法:算法梳理与代码实现
  7. CNN可视化又添新作,南大开源Group-CAM:高效的显著图生成方法|CVPR2021
  8. 集员法对3D激光雷达和相机的外部校准
  9. OpenCV 4.5.2 发布
  10. python学习一(python与pip工具下载与安装)