第九章预处理命令.ppt
《第九章预处理命令.ppt》由会员分享,可在线阅读,更多相关《第九章预处理命令.ppt(31页珍藏版)》请在三一文库上搜索。
1、2019/2/18,1,本章重点难点分析,目的与要求 掌握宏定义与文件包含 重点 带参数的宏定义 难点带参数的宏定义与函数的区别使用,第九章.编译预处理,2019/2/18,2,一、概念: c提供编译预处理功能:c对源程序进行编译( 语法 分析、代码生成和优化等)之前需要完成的工作。 即完成对预处理的命令处理,将预处理的结果再和源程 序一起进行编译,最后得到可执行的目标代码。 编译预处理的命令有三种: 宏定义 文件包含 条件编译 均以 # 号开始,末尾无 “; ” 号(这是 c 的特殊命令不是语句),C语言 源程序,C语言 目标程序,可执行的 目标程序,运行结果,运行,编译,与库函数连接,20
2、19/2/18,3,二、宏定义 1、不带参数宏定义 格式: #define 标识符 字符串 含义: 定义时将一个字符串定义成一个标 识符;编译预处理时,将程序中所有 宏名用该符串代替,也称宏展开(宏 替换)。,2019/2/18,4,#include #define PI 3.1415926 void main() float l,s,r,v; printf(“input radius:“); scanf(“%f“, ,2019/2/18,5,注意: 宏名常用大写,以示与变量区别。 宏展开 时不做语法检查,只是简单的替换。 宏不是语句,末尾不要加分号。 宏名有效范围:从宏定义开始到本源文件 结
3、束, 但也可用 #undef 终止。 可以 引用已定义的宏名, 层层置换。 双引号 中的内容即使与宏名 相同也不替换。 #define PI 3.14159 printf(“PI=%5.2fn”,PI); /PI= 3.14,2019/2/18,6,2、带参数宏定义 格式: #define 宏名(参数表) 字符串 含义: 基本同不带参宏定义,区别在编译预处 理时,将程序里出现宏名处用字符串代 替,而字符串里的参数应用宏名后括号 里的实参替换。,2019/2/18,7,例:#define PI 3.14159 #define S(r) PI*r*r main( ) float area, a;
4、scanf (“ %f ”, /* 宏展开:area=PI*(a+2)*(a+2) */,2019/2/18,8,例 #include #define FU(k) k+3.14 #define PR(a) printf (“a=%dt ”, (int)(a) #define PRINT(a) PR(a); putchar (n) main( ) int x=2; PRINT (x*FU(2) ; a 预处理后: printf (“ a=%dt”, (int) (x*2+3.14); putchar (n) ; 运行结果: a=7 常用于: .* 定义符号常量,简化编程,修改程序方 便,见名知意
5、。 * 定义复杂的打印格式,简化编程。,2019/2/18,9,三、文件包含: 文件包含处理是一个源程序文件可以将另一个 源程序文件全部包含。 file1.c file2.c file1.c 图一 图二 图三 图一用 “ #include “file2.c” ”将file2.c中的内容代替。 最后 file1.c 文件如图三所示。 #include “file2.c” 先在 file1.c 所在目录查找,若无, 再按系统标准方式查找 file2.c #include 按系统标准方式查找 file2.c 标准方式::在系统存放库函数的目录中查找要包含的文件。,#include “file2.c”
6、 A,B,B A,2019/2/18,10,* 所有c提供的库函数在调用时,都将库函 数的 相应头文件用 #include包含,才能对相 应的库 函数进行调用; * 多人编写的大系统,为共享所定义的符 号常量,类型说明 ,外部说明等,均可组织 成头文件; * 头文件可带路经, 如:#include 表示头文件路径是 userprog.h *也可将多人编写程序,合并成一个文件。,2019/2/18,11,四、条件编译,一般情况下,所有的源程序都要编译,但是有时,只希望程序中的一部分内容在满足一定条件时才编译,也就是对这部分内容指定编译的条件,称为“条件编译”。,2019/2/18,12,A: #
7、 ifdef 标识符 程序段1 #Else 程序段2 #endif B: # if 表达式 程序段1 #else 程序段2 # endif,C: # ifndef 标识符 程序段1 #Else 程序段2 #endif,条件编译的格式:,2019/2/18,13,#include # define LETTER void main( ) char str20=“C Language“,c; int i; i=0;,while( (c=stri) !=0) i+; #if LETTER if(c=a ,2019/2/18,14,作业: 9.1、9.3、9.4,2019/2/18,15,目的与要求
8、掌握指针的概念. 数组(字符串,函数)的指针 指向数组(字符串,函数)的指针变量 返回指针值的函数,指针数组与指针的指针 重点 数组(字符串,函数)的指针 指向数组(字符串,函数)的指针变量 难点 数组(字符串,函数)的指针 指向数组(字符串,函数)的指针变量 返回指针值的函数,指针数组与指针的指针,第十章.指针,2019/2/18,16,一、概念,变量的值 变量的地址,2019/2/18,17,通过变量名访问: 给变量赋值; 直接访问变量将变量值输出;,通过指向变量在内存地址来访问: 间接访问变量, 即由变量存放的地址来得到变量的值。,main( ) int a, b; a=10; b=20
9、; printf (“%d,%dn”,a, b);,main( ) int a=; b=2; int *pa, *pb; pa= ,2019/2/18,18,3,3,指针:变量的地址 指针变量:专门用来存放另一个变量的地址的变量。,2000,2000,2019/2/18,19,二、指针变量 指针就是变量在内存的首地址。 指针变量存放另一个变量首地址的变量。 1. 指针变量定义: 基类型 * 指针变量名; int *pa, *pb; /* 定义pa, pb分别指向整型类型 */ float *pf1, *pf2; /* 定义pf1, pf2分别指向实型变量 */ char *pc1, *pc2;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第九 预处理 命令
链接地址:https://www.31doc.com/p-2121611.html