- 0
- 0
- 约1.62万字
- 约 87页
- 2017-06-03 发布于北京
- 举报
第10章 预处理、输入/输出和文件操作 C语言的预处理功能由C编译的预处理程序实现,负责分析和处理行首以“#”号开头的控制行。这些控制行包括宏替换、文件包含和条件编译等。 C语言中并没有专门用于输入/输出的语句。为了给出方便的程序接口,C语言中提供了“标准I/O库”,它是一组函数,可提供一系列I/O服务。 10.1 预处理功能 10.2 文 件 包 含 10.3 条 件 编 译 10.4 其他预处理功能 10.5 库函数使用方式 10.6 常用标准输入/输出函数 10.7 文件及有关操作 10.8 其他一些常用的函数(宏) 10.1 预处理功能 10.1.1 简单宏定义和宏替换 简单宏定义的一般形式是: #define 标识符 字符序列 其中,标识符称作宏名,一般用大写字母。例如: #define PI 3.1415926 对于像PI这样的宏在进行使用和处理时分为3个步骤:① 在函数之外(往往在程序开头)使用#define控制行定义宏名;② 在程序中使用已定义的宏名;③ 在程序进行编译时,由预处理程序对宏名进行宏替换,恢复被宏名所代替的字符序列的原貌。例如: #define N 50 #define PI 3.1415926 … int a[N]; double r,l; … l = 2*PI*r; … 经过宏替换之后,上述代码实际上就变成: … int a[50]; double r,l; … l=2*3.1415926*r; … 有关宏的定义和使用要注意以下几点: ① 宏定义在源程序中要单独占用一行,通常“#”号出现在一行的第一个字符的位置,允许在#号的前面有若干空格或制表符,但不允许有其他字符。 ② 宏名用大、小写字母标识都行,为醒目起见,往往用大写字母表示。 ③ 用双引号括起来的标识符不做宏替换。例如: #define TRUE 1 则打印语句 printf(TRUE); 会打印出TRUE,而不是1。 ④ 宏定义可以嵌套。例如: #define PI 3.1415926 #define TWOPI ( 2*PI ) 在预处理后,语句 c1=TWOPI * r; 便替换成 c1=( 2 * 3.1415926 ) * r; ⑤ 宏替换只是按原来的定义“机械地”进行替换,不管替换后的结果是对还是错。例如: #define A 3+2 那么 5/A 被替换成 5/3+2 又如: #define PI 3.l4l5q /* 有错:4的前面是字母l,5的后面是字母q */ … area = PI * r * r; … 照样进行宏替换: … area = 3.l4l5q * r * r; … 为了避免出现上述第一种情况造成的误解,应当把字符序列用括号括起来。 #define A (3+2) ⑥ 如果宏定义中的字符序列过长,在一行中放不下,可在该行末尾加续行符“\”,后随一个换行符。 #define LONG_STRING this is a very long string that is used as \ ↙ an example ⑦ 可以用宏定义来表示数据类型。 #define MAX 100 #define ENTRY struct entrytype 在程序中可用ENTRY定义变量: ENTRY table[MAX],* p; ⑧ 如果宏名出现在#号之后,则不对它进行替换。例如: #define DEF define #DEF N 10 ⑨ 宏名的有效范围是从定义它的地方开始到其所在文件末尾或者用 #undef指令消除该宏定义为止。宏名不受分程序结构的影响,在其有效范围内遵循宏替换的规则。 10.1.2 带参数的宏定义 1.带参数宏定义的一般格式 带参数的宏定义的一般形式是: #define 宏名(参数表) 字符序列 例如,定义一个计算圆面积的宏:
您可能关注的文档
最近下载
- 胰源性腹泻的护理.ppt VIP
- 2025年天翼云从业者考试题库.docx
- 建设项目经济评价方法与参数(第三版)..pdf VIP
- 小学三年级下册综合实践活动教案.pdf VIP
- 实施指南(2025)《GB_T11364-2008钎料润湿性试验方法》.pptx VIP
- 2024年人教版英语中考复习:7~9年级课本语法知识梳理汇编(实用,必备!).doc VIP
- 生活污泥综合利用项目环评(新版环评)环境影响报告表.pdf VIP
- 宁波十校2026届高三3月联考数学试卷(含答案及解析).pdf
- 2025年互联网营销师危机公关中的压力测试与模拟演练专题试卷及解析.pdf VIP
- 2025年甘肃省兰州市中考语文试卷.docx VIP
原创力文档

文档评论(0)