C语言程序设计实用教程 教学配套课件 陈方 第9章.pdfVIP

C语言程序设计实用教程 教学配套课件 陈方 第9章.pdf

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 编译预处理 编译预处理是指,在对源程序进行编译之前,先对源程序中的编译预处理命 令进行处理;然后再将处理的结果和源程序一起进行编译,以得到目标代码。 9.1 包含指令 9.1.1 文件包含的概念 文件包含是指,一个源文件可以将另一个源文件的全部内容包含进来。 9.1.2 文件包含处理命令的格式 #include “包含文件名” 或 #include 包含文件名 两种格式的区别仅在于: (1)使用双引号:系统首先到当前目录下查找被包含文件,如果没找到,再到系 统指定的“包含文件目录” (由用户在配置环境时设置)去查找。 (2)使用尖括号:直接到系统指定的“包含文件目录”去查找。一般地说,使用双 引号比较保险。 第9章 编译预处理 9.1.3 文件包含的优点 一个大程序,通常分为多个模块,并由多个程序员分别编程。有了文件包含 处理功能,就可以将多个模块共用的数据或函数,集中到一个单独的文件中。 9.1.4 说明 (1)编译预处理时,预处理程序将查找指定的被包含文件,并将其复制到#include命令出 现的位置上。 (2)常用在文件头部的被包含文件,称为“标题文件”或“头部文件” ,常以“h” (head)作为 后缀,简称头文件。使用库函数时,常使用文件包含指令,如: 1)使用数学函数时,应包含“math.h” ; 2)使用字符函数和字符串函数时,应包含“string.h” ; 3)使用输入输出函数时,应包含“stdio.h” ; 4)使用图形函数时,应包含“graphics.h” ; Turbo C V2.0中头文件有29个,适用于不同的库函数,详见参考书“Turbo C实用大全” 。 (3)一条包含命令,只能指定一个被包含文件。如果要包含n个文件,则要用n条包含命 令。 (4)文件包含可以嵌套,即被包含文件中又包含另一个文件。 第9章 编译预处理 9.2 宏定义指令 在C语言中,“宏”分为无参数的宏(简称无参宏)和有参数的宏(简称有参 宏)两种。 9.2.1 无参宏定义 1.无参宏定义的一般格式 #define 标识符 字符串 其中,“define”为宏定义命令;“标识符”为所定义的宏名,通常用大写字母表 示,以便于与变量区别;“字符串”可以是常数、表达式、格式串等。在第1章例1-2 中已有介绍。 9.2.2 符号常量 在定义无参宏时,如果“字符串”是一个常量,则相应的“宏名”就是一个符号常 量。恰当命名的符号常量,除具有宏定义的上述优点外,还能表达出它所代表常量 的实际含义,从而增强程序的可读性。常用的有: EOF (文件尾)、NULL(空指针)、MIN(极小值) MAX(极大值)、STEP(步长)、PI(圆周率) 第9章 编译预处理 9.2.3 有参宏定义 1.有参宏定义的一般格式 #define 宏名(形参表) 字符串 2.有参宏的引用和宏代换 (1)引用格式:宏名(实参表)。 (2)宏展开:引用宏时,先用引用格式中提供的实参,替换宏定义“字符串” 中的 形参,非形参字符保持不变;再将替换后的“字符串”代换引用的宏。 3.说明 (1)定义有参宏时,宏名与左圆括号之间不能留有空格。否则,C编译系统将空 格以后的所有字符均作为替代字符串,而将该宏视为无参宏。 (2)有参宏定义与函数是不同的,引用有参宏定义时,是宏展开,是一种代换; 而调用函数时,是先将实参传给被调用函数,被调用函数运行后,返回调用处继 续运行。 第9章 编译预处理 [例9-1] 有参宏示例。 #define S(a,b) a+b /* 有参宏定义 */ sum(x,y) /* 自定义的和函数 */ { return(x+y); } main( ) { int m=2,n=3,u,v; u=S(m,n)*2; /* 引用宏S(m,n),宏展开后,此语句变为 u= m + n * 2;*/ v=sum(m,n)*2; /* 调用和函数,返回值为5 */ printf(u=%d,v=%d\n,u,v); } 程序运行

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档