文件包含9.3条件编译教学要求1.理解预处理功能在程序.ppt

文件包含9.3条件编译教学要求1.理解预处理功能在程序.ppt

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
文件包含9.3条件编译教学要求1.理解预处理功能在程序.ppt

教学内容: 9.1 宏处理 9.2 文件包含 9.3 条件编译 教学要求: 1.理解预处理功能在程序设计中的作用。 2.掌握宏定义的使用。 3.掌握文件包含、条件编译的应用。 宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。 在C语言中,“宏” 分为有参数和无参数两种。 使用宏定义的优点 (1)可提高源程序的可维护性,可移植性 (2)减少源程序中重复书写字符串的工作量 1.不带参数的宏定义 (1)无参宏定义的一般格式 #define 标识符 语言符号字符串 define: 为宏定义关键字; 标识符: 定义的宏名,通常用大写字母取名,以便于与变量区别; 语言符号字符串: 即宏体,可以是常数、表达式、格式串等。例如: #define PI 3.1415926 定义了一个符号常量PI,表示用标识符PI替换3.1415926。在编译预处理时,会将程序代码中所有的PI都用3.1415926替换。 2. 关于不带参数的宏定义的几点说明: (1)宏名一般用大写字母表示,便于与变量名区别;一般将字符个数较多的字符串用一个宏名替换,减少程序中多处引用字符串书写错误。 (2)宏定义是用宏名来表示一个字符串,在宏展开时以该字符串取代宏名,这只是一种简单的代换, 预处理程序对它不作任何检查。如有错误,只能在编译已被宏展开后的源程序时发现。 (3)宏定义不是语句,在行末不加分号,如加上分号则连分号也一起置换。 (4)宏定义必须写在函数之外,其作用域为宏定义命令起到源程序结束。如要终止其作用域可使用#undef命令。例如: # define PI 3.14159 main(){……} # undef PI /*终止宏定义PI*/ min(){....} 表示PI只在main函数中有效,在min中无效。 (5) 宏名在源程序中若用引号括起来,则预处理程序不对其作宏代换。 (6) 宏定义可以嵌套,但嵌套的宏定义名要是已经定义的宏名。在宏展开时由预处理程序层层替换。例如: #define R 14.256 #define PI 3.1415926 #define S PI*R*R /* PI、R是已定义的宏名*/ 则语句printf("%f",s);在宏代换后变为 printf("%f",3.1415926*14.256*14.256); (7)可用宏定义表示数据类型,使书写方便。 例如: #define STU int 在程序中可用STU替换数据类型int。 3.带参宏定义 (1)带参宏定义格式:#define 宏名(形参表) 宏体 (2)带参宏调用格式:宏名(实参表) (3)宏展开:用宏调用提供的实参字符串,直接置换宏定义命令行中相应形参字符串,非形参字符保持不变 带参宏定义说明 (1)定义有参宏时,宏名与左圆括号之间不能留有空格。否则,C编译系统将空格以后的所有字符均作为替代字符串,而将该宏视为无参宏。 (2)有参宏的展开,只是将实参作为字符串,简单地置换形参字符串,而不做任何语法检查。在定义有参宏时,在所有形参外和整个字符串外,均加一对圆括号。 9.2 文 件 包 含 1.文件包含的概念 文件包含是指,一个源文件可以将另一个源文件的全部内容包含进来。 2.文件包含处理命令的格式 #include “包含文件名” 或 #include <包含文件名> 两种格式的区别仅在于: (1)使用双引号:系统首先到当前目录下查找被包含文件,如果没找到,再到系统指定的“包含文件目录”(由用户在配置环境时设置)去查找。 (2)使用尖括号:直接到系统指定的“包含文件目录”去查找。一般地说,使用双引号比较保险。 9.3 条 件 编 译 3. 第三种形式 # if 常量表达式 程序段1 #else 程序段2 #endif 它的功能是,如常量表达式的值为真(非0),则对程序段1 进行编译,否则对程序段2进行编译。可以使程序在不同条件下,完成不同的功能。 * * 第 9 章 预 处 理 编译预处理 编译预处理是指,在对源程序进行编译之前,系统将自动引用预处理程序对源程序中的预处理部分作处理; 然后再将处理的结果,和源程序一起进行编译,以得到目标代码。 9.1 宏 处 理 例 9.1 不带参数的宏的程序 #in

文档评论(0)

magui + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8140007116000003

1亿VIP精品文档

相关文档