中国科学技术大学:《C语言程序设计语言》课程教学资源(PPT课件)第6章 预处理

第6章预处理 白雪飞 baixfaustc. edu.cn 中国科学技术大学电子科学与技术系 Dept of Elec. Sci. Tech, USTC Fal22003
白 雪 飞 baixf@ustc.edu.cn 中国科学技术大学电子科学与技术系 Dept. of Elec. Sci. & Tech., USTC Fall, 2003 第6章 预 处 理

目录 ●预处理 ●宏定义 文件包含 条件编译 C语言程序设计-第6章预处理2
C语言程序设计 - 第6章 预处理 2 目 录 ⚫ 预处理 ⚫ 宏定义 ⚫ 文件包含 ⚫ 条件编译

预处理( Preprocessor) ●预处理 在编译之前对源程序进行“预处理” ■预处理命令不是C语句,末尾没有分号 ■预处理命令不在可执行文件中执行 ■预处理命令都以#开始 包括宏定义、文件包含、条件编译等 举例 ■# define mAx1000 ■#inc1ude C语言程序设计-第6章预处理
C语言程序设计 - 第6章 预处理 3 预处理 (Preprocessor) ⚫ 预处理 ◼ 在编译之前对源程序进行“预处理” ◼ 预处理命令不是C语句,末尾没有分号 ◼ 预处理命令不在可执行文件中执行 ◼ 预处理命令都以#开始 ◼ 包括宏定义、文件包含、条件编译等 ⚫ 举例 ◼ #define MAX 1000 ◼ #include

宏( Macro)定义 无参数的宏定义 带参数的宏定义 C语言程序设计-第6章预处理4
C语言程序设计 - 第6章 预处理 4 宏(Macro)定义 ⚫ 无参数的宏定义 ⚫ 带参数的宏定义

无参数的宏定义 般形式 # define标识符字符串 说明 ■把源程序中相应标识符予以替换 仅是简单的字符串替换,没有任何语法正确 性检查 有效范围从定义处开始,到文件结束,或者 由# undef命令终止作用域 ■行末没有分号,如有分号将会被一起替换 C语言程序设计-第6章预处理5
C语言程序设计 - 第6章 预处理 5 无参数的宏定义 ⚫ 一般形式 ◼ #define 标识符 字符串 ⚫ 说明 ◼ 把源程序中相应标识符予以替换 ◼ 仅是简单的字符串替换,没有任何语法正确 性检查 ◼ 有效范围从定义处开始,到文件结束,或者 由#undef命令终止作用域 ◼ 行末没有分号,如有分号将会被一起替换

无参宏定义举例 define R 3.0 define PI 3.1415926 # define工2*p工*R #define begin t tdefine end #define forever for(;i void main o begin /*{*/ printf("L=8f",工); # undef p*取消对p的宏定义*/ forever;/*for(;;);无限循环* end C语言程序设计-第6章预处理6
C语言程序设计 - 第6章 预处理 6 无参宏定义举例 #define R 3.0 #define PI 3.1415926 #define L 2*PI*R #define begin { #define end } #define forever for(;;) void main() begin /* { */ printf("L=%f", L); #undef PI /* 取消对PI的宏定义 */ forever; /* for(;;); 无限循环 */ end /* } */

带参数的宏定义 般形式 # define宏名(参数表)字符串 说明 ■宏定义仅是把参数作为字符串做简单替换, 而不做任何运算求值和语法检查 宏名与参数表的括号之间不应有空格 应注意参数替换后可能出现的语法错误和意 料之外的运算 应在宏定义内容及其中参数两边加上括号 C语言程序设计-第6章预处理7
C语言程序设计 - 第6章 预处理 7 带参数的宏定义 ⚫ 一般形式 ◼ #define 宏名(参数表) 字符串 ⚫ 说明 ◼ 宏定义仅是把参数作为字符串做简单替换, 而不做任何运算求值和语法检查 ◼ 宏名与参数表的括号之间不应有空格 ◼ 应注意参数替换后可能出现的语法错误和意 料之外的运算 ◼ 应在宏定义内容及其中参数两边加上括号

带参宏定义举例 #define Sl(a,b)a*b #define S2 (a,b)((a)*(b) #define max(a,b)((a)>(b)?(a):(b)) void main ( intx=3,y=4,i=5,j=6 s=s1(x+Y,x-y);/*s=x+y*x-Y;s==11*/ s=s2(x+Y,x-y);/*s=((x+y)*(x-y));s==-7*/ z-max (i++, 3++) /*z=((++)>(++)?(1++):(j++));*/ j==8*/ C语言程序设计-第6章预处理8
C语言程序设计 - 第6章 预处理 8 带参宏定义举例 #define S1(a,b) a*b #define S2(a,b) ((a)*(b)) #define max(a,b) ((a)>(b)?(a):(b)) void main() { int x=3, y=4, i=5, j=6, s, z; s=S1(x+y, x-y); /* s=x+y*x-y; s==11 */ s=S2(x+y, x-y); /* s=((x+y)*(x-y)); s==-7 */ z=max(i++, j++); /* z=((i++)>(j++)?(i++):(j++)); */ /* z==7, i==6, j==8 */ }

文件包含 般形式 #主nc1ude" filename ■#inc1ude 说明 ■把另一个源文件的全部内容包含进来 ■预编译后,它们已成为一个文件 头文件的扩展名一般用.h,但并非规定 ■调用库函数一般使用<>,也可以使用v ■调用用户编写的头文件应使用v C语言程序设计-第6章预处理9
C语言程序设计 - 第6章 预处理 9 文件包含 ⚫ 一般形式 ◼ #include "filename" ◼ #include ⚫ 说明 ◼ 把另一个源文件的全部内容包含进来 ◼ 预编译后,它们已成为一个文件 ◼ 头文件的扩展名一般用.h,但并非规定 ◼ 调用库函数一般使用<>,也可以使用"" ◼ 调用用户编写的头文件应使用

条件编译 条件编译 对某些部分的源程序指定编译的条件 ■可以减少被编译的语句,减少目标程序的长 度,减少运行时间 有利于移植程序,增加程序的灵活性 命令形式 ■#立fdeE.,,#白1se。..# endif #主 Ender.。,#e1se..,# endif ■#立£。。。#eLse。。,# endif C语言程序设计-第6章预处理10
C语言程序设计 - 第6章 预处理 10 条件编译 ⚫ 条件编译 ◼ 对某些部分的源程序指定编译的条件 ◼ 可以减少被编译的语句,减少目标程序的长 度,减少运行时间 ◼ 有利于移植程序,增加程序的灵活性 ⚫ 命令形式 ◼ #ifdef...#else...#endif ◼ #ifndef...#else...#endif ◼ #if...#else...#endif
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 中国科学技术大学:《C语言程序设计语言》课程教学资源(PPT课件)第5章 函数.ppt
- 中国科学技术大学:《C语言程序设计语言》课程教学资源(PPT课件)第4章 数组.ppt
- 中国科学技术大学:《C语言程序设计语言》课程教学资源(PPT课件)第3章 C语言的基本语句和程序结构设计.ppt
- 中国科学技术大学:《C语言程序设计语言》课程教学资源(PPT课件)第2章 数据类型、运算符和表达式.ppt
- 中国科学技术大学:《C语言程序设计语言》课程教学资源(PPT课件)概述(白雪飞).ppt
- 中国科学技术大学:《C语言程序设计语言》课程教学资源(PPT课件)第10章 文件操作.ppt
- 中国科学技术大学:《C语言程序设计语言》课程教学资源(PPT课件)第1章 C语言的程序结构(白雪飞).ppt
- 西安石油大学计算机学院:《程序设计语言(C语言)》课程教学资源_实验指导.docx
- 西安石油大学计算机学院:《程序设计语言(C语言)》课程教学资源_作业习题.docx
- 西安石油大学计算机学院:《程序设计语言(C语言)》课程教学资源(PPT课件)第09章 预处理命令.ppt
- 西安石油大学计算机学院:《程序设计语言(C语言)》课程教学资源(PPT课件)第08章 函数.ppt
- 西安石油大学计算机学院:《程序设计语言(C语言)》课程教学资源(PPT课件)第07章 数组.ppt
- 西安石油大学计算机学院:《程序设计语言(C语言)》课程教学资源(PPT课件)第06章 循环控制.ppt
- 西安石油大学计算机学院:《程序设计语言(C语言)》课程教学资源(PPT课件)第05章 逻辑运算和判断选取控制.ppt
- 西安石油大学计算机学院:《程序设计语言(C语言)》课程教学资源(PPT课件)第04章 最简单的C程序.ppt
- 西安石油大学计算机学院:《程序设计语言(C语言)》课程教学资源(PPT课件)第03章 数据类型、运算符与表达式.ppt
- 西安石油大学计算机学院:《程序设计语言(C语言)》课程教学资源(PPT课件)第02章 算法——程序的灵魂.ppt
- 西安石油大学计算机学院:《程序设计语言(C语言)》课程教学资源(PPT课件)第01章 概述(孙友仓).ppt
- 西安石油大学计算机学院:《程序设计语言(C语言)》课程教学资源(PPT课件)第13章 文件.ppt
- 西安石油大学计算机学院:《程序设计语言(C语言)》课程教学资源(PPT课件)第12章 位运算.ppt
- 中国科学技术大学:《C语言程序设计语言》课程教学资源(PPT课件)第7章 指针.ppt
- 中国科学技术大学:《C语言程序设计语言》课程教学资源(PPT课件)第8章 结构体.ppt
- 中国科学技术大学:《C语言程序设计语言》课程教学资源(PPT课件)第9章 位运算.ppt
- 西安石油大学计算机学院:《程序设计语言(C语言)》课程教学资源_精品课程申报表.doc
- 西安石油大学:《微机原理与应用 Principle and Application of Microcomputer》精品课程教学资源_教学大纲.pdf
- 西安石油大学:《微机原理与应用 Principle and Application of Microcomputer》精品课程教学资源_实验大纲.pdf
- 西安石油大学:《微机原理与应用 Principle and Application of Microcomputer》精品课程教学资源(实验讲义)实验一 顺序程序设计与调试.pdf
- 西安石油大学:《微机原理与应用 Principle and Application of Microcomputer》精品课程教学资源(实验讲义)实验二 分支程序设计.pdf
- 西安石油大学:《微机原理与应用 Principle and Application of Microcomputer》精品课程教学资源(实验讲义)实验三 循环程序设计.pdf
- 西安石油大学:《微机原理与应用 Principle and Application of Microcomputer》精品课程教学资源(实验讲义)实验四 子程序设计.pdf
- 西安石油大学:《微机原理与应用 Principle and Application of Microcomputer》精品课程教学资源(实验讲义)实验五 并行接口芯片8255的应用.pdf
- 西安石油大学:《微机原理与应用 Principle and Application of Microcomputer》精品课程教学资源(实验讲义)实验六 中断控制器8259 的应用.pdf
- 西安石油大学:《微机原理与应用 Principle and Application of Microcomputer》精品课程教学资源(实验讲义)实验七 定时、计数器8253的应用.pdf
- 西安石油大学:《微机原理与应用 Principle and Application of Microcomputer》精品课程教学资源(实验讲义)实验八 接口综合应用.pdf
- 西安石油大学计算机学院:《数字逻辑 Digital Logic》精品课程教学资源(教学大纲)《数字逻辑(Ⅰ)》课程教学大纲.pdf
- 西安石油大学计算机学院:《数字逻辑 Digital Logic》精品课程教学资源(教学大纲)《数字逻辑(Ⅱ)》课程教学大纲.pdf
- 西安石油大学计算机学院:《数字逻辑 Digital Logic》精品课程教学资源(打印版)数字逻辑(Ⅰ)实验大纲.pdf
- 西安石油大学计算机学院:《数字逻辑 Digital Logic》精品课程教学资源(打印版)数字逻辑(Ⅰ)实验指导书(学生用).pdf
- 西安石油大学计算机学院:《数字逻辑 Digital Logic》精品课程教学资源(打印版)数字逻辑(Ⅱ)实验指导书.pdf
- 西安石油大学计算机学院:《数字逻辑 Digital Logic》精品课程教学资源(打印版)数字逻辑(Ⅱ)实验指导书(学生用).pdf