齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第九章 预处理命令

本次课的内容是 1)宏定义 1、预处理命令 2)文件包 3)条件编译 2、指针和指针变量的概 3、指针变量的使用
本次课的内容是: 1、预处理命令 2、指针和指针变量的概念 3、指针变量的使用 1)宏定义 2)文件包含 3)条件编译

第9章预处理命令 ★作用:对源程序编译之前做一些处理,生成扩展名 为的C源程序 ★种类 今宏定义 define 今文件包含# include ◆条件编译群#else-#endⅱ等 ★格式: ◆“#”开头 心占单独书写行 今语旬尾不加分号
第9章 预处理命令 作用:对源程序编译之前做一些处理,生成扩展名 为的C源程序 种类 ❖宏定义 #define ❖文件包含 #include ❖条件编译 #if--#else--#endif 等 格式: ❖“#”开头 ❖占单独书写行 ❖语句尾不加分号

89.1宏定义 ★不带参数宏定义 ◆一般形式:# efine宏名字串 ☆功能:用指定标识符(宏名)代替字符串 如# define Yes1 define no 0 define p 3.1415926 #define oUT printf("Hello, World)
§9.1 宏定义 不带参数宏定义 ❖一般形式: #define 宏名 字符串 ❖功能:用指定标识符(宏名)代替字符串 如 #define YES 1 #define NO 0 #define PI 3.1415926 #define OUT printf(“Hello,World”);

☆定义位置任意(一般在函数外面 今作用域从定义命令到文件结束 令# undef可终止宏名作用域 格式:# undef宏名 例# define YES1 maino YES原作用域 undef yes #define YEs 0 maxo YES新作用域
❖定义位置:任意(一般在函数外面) ❖作用域:从定义命令到文件结束 ❖#undef可终止宏名作用域 格式: #undef 宏名 例 #define YES 1 main() { …….. } #undef YES #define YES 0 max() {…….. } YES原作用域 YES新作用域

◆宏展开:预编译时,用字符串替换宏名 不作语法检查 ifX==YES) printf" correct!ln” else if ( X==No) printf("error!n) 展开后:f(X==1) pint(" correct!ln”); else if(X=0) printf("error!n) 引号中的內容与宏名和J不萓换 例# define f3.14159 pint("2*P|=%fn",P|*2); 宏展开: printf((“2*P=%fn”,3.14159*2);
❖宏展开:预编译时,用字符串替换宏名-- -不作语法检查 ❖引号中的内容与宏名相同也不置换 例 #define PI 3.14159 printf(“2*PI=%f\n”,PI*2); 宏展开:printf(“2*PI=%f\n”,3.14159*2); 如 if(x==YES) printf(“correct!\n”); else if (x==NO) printf(“error!\n”); 展开后: if(x==1) printf(“correct!\n”); else if (x==0) printf(“error!\n”);

今宏定义可靛套,不能递归 例# define maX MA×+10(×) 心宏定义中使用必要的括号() 例# define v|DTH80 define ENGTH WidtH+40 var=LENGTH*2 宏展开:Var=80+40*2; 例# define v|DTH80 #define LENGTH (WIDTH+40) var=LENGTH*2 宏展开:Var=(80+40*2;
例 #define MAX MAX+10 () ❖宏定义可嵌套,不能递归 ❖宏定义中使用必要的括号() 例 #define WIDTH 80 #define LENGTH WIDTH+40 var=LENGTH*2; 宏展开:var= 80+40 *2; ( ) ( ) 例 #define WIDTH 80 #define LENGTH WIDTH+40 var=LENGTH*2; 宏展开:var= 80+40 *2;

★带参数宏定义 ☆一般形式:# define宏名(参数表)字串 例# define s(ab)a” 不能加空格 area=S(3, 2) 宏展开: area= 3*2 今宏展开:形参用实参换。其它字符保留 心宏体及各形参外一般应加括号() z=POWER(a+b); 宏展开:z=a+b"a+b; 一般写成:# efine POWer()(X)(X) 宏展开:z=(a+b)(a+b);
带参数宏定义 ❖一般形式: #define 宏名(参数表) 字符串 例 #define S (r) PI*r*r 相当于定义了不带参宏S,代表字符串“(r) PI*r*r” ❖宏展开:形参用实参换,其它字符保留 ❖宏体及各形参外一般应加括号() 例 #define S(a,b) a*b ……….. area=S(3,2); 宏展开: area=3*2; 不能加空格 例 #define POWER(x) x*x a=4; b=6; z=POWER(a+b); 宏展开:z=a+b*a+b; 一般写成: #define POWER(x) ((x)*(x)) 宏展开: z=((a+b)*(a+b));

§9.2文件包含 〈〉直接按标准目录搜索 69 ★功能:一个源文 先在当前目录搜索,再搜索标准目 可指定路径 包含进来 ★一般形式:# include“文件名” 或# include ★处理过程:预编译时,用被包含文件的内容取代 该预处理命令,再对“包含”后的文件作一个源 文件编译 # include“fle2.c B A file2.c filel.c file1
§9.2 文件包含 功能:一个源文件可将另一个源文件的内容全部 包含进来 一般形式: #include “文件名” 或 #include #include “file2.c” file1.c file2.c file1.c B A B A 处理过程:预编译时,用被包含文件的内容取代 该预处理命令,再对“包含”后的文件作一个源 文件编译 <> 直接按标准目录搜索 “” 先在当前目录搜索,再搜索标准目录 可指定路径

行程序时,在编译前执行预处理命令, 结果为 max(int x, int y) Rint z zFX>y?x: y; return(z); maino inta,b,c; scant(“%d,%d”,ca,lb); c=max(a, b) printf(“ Max is:%d”,c);
例如: /* file1.c */ /* file2.c */ #include “file2.c” max(int x, int y) main() {int z; {int a,b,c; z=x>y?x:y; scanf(“%d,%d”,&a,&b); return(z); c=max(a,b); } printf(“Max is :%d”,c); } 运行程序时,在编译前执行预处理命令, 结果为: max(int x, int y) {int z; z=x>y?x:y; return(z); } main() {int a,b,c; scanf(“%d,%d”,&a,&b); c=max(a,b); printf(“Max is :%d”,c); }

★被包含文件内容 file3. c 令源文件(*.C file2.c 宏定义 ☆头文件(*h) filel.c 数据结构定义 A 函数说明等 ★文件包含可嵌套 # include“fle2c”# include“file3.c” C fle3应出现在 A B fle2之前 file3.c filel.c file2.c 也可以在fe中用两个 includ命令分另苞含le2和file3: #include "file3. h #include "file2.h
被包含文件内容 ❖源文件(*.c) ❖头文件(*.h) 宏定义 数据结构定义 函数说明等 文件包含可嵌套 #include “file2.c” file1.c A file3.c C #include “file3.c” file2.c B file1.c A file3.c file2.c 也可以在file1中用两个include命令分别包含file2和file3: #include "file3.h" #include "file2.h" file3应出现在 file2之前
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第八章 函数.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(实验讲义)TURBO C上机操作实验部分.doc
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(教学大纲,实验,本科).doc
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第十三章 文件.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第十一章 结构体与共用体.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第一章 C语言概述.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(部分习题答案,前三章).doc
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)选择结构实验2.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)选择结构2.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)选择实验1.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第四章 输入输出.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第六章 循环控制.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第五章 选择结构程序设计.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第二章 程序的灵魂-算法.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第二次课思考题问答.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第三章 数据类型、运算符与表达式(c).ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第三次课思考题问答.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第七章 数组.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)数组第二次实验.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)数组第一次实验.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第十章 指针.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第一章 C语言概述、第二章 数据类型、运算符与表达式 2.1-2.5.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第九章 指针 §9.4 字符串指针和指向字符串的指针变量 §9.5 函数的指针及指向函数的指针变量 §9.6 返回指针值的函数 §9.7 指针数组和指向指针的指针.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第十章 结构体与共用体.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第十二章 文件的基本操作.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第十三章 位运算 §13.1 位运算概述 §13.2 位运算符的使用方法.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第二章 数据类型、运算符与表达式 2.6-2.10、第三章 最简单的C程序设计 §3.1 C语句概述 §3.2 程序的三种基本结构.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第三章 最简单的C程序设计 §3.3 赋值语句 §3.4 数据输出 §3.5 数据输入 §3.6 程序举例.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第四章 逻辑运算和判断选取控制 §4.1 关系运算符 §4.2 逻辑运算符和逻辑表达式 §4.3 if 语句–––条件判断.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第四章 逻辑运算和判断选取控制 §4.4 switch 语句–––开关语句 §4.5 程序举例、第五章 循环控制.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第七章 函数(主讲:李丽娟).ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第六章 数组 §6.1 一维数组 §6.2 二维数组.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第六章 数组 §6.3 字符数组、第八章编译预处理 §8.1 宏定义 §8.2 文件包含 §8.3 条件编译.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第九章 指针 §9.1 指针的概念 §9.2 指针变量的定义和引用 §9.3 数组的指针及指向数组的指针变量.ppt
- 《计算方法》第二章(2-3)牛顿( Newton)迭代方法.doc
- 《计算方法》第二章(2-3)续 Newton迭代法的变形.doc
- 《计算方法》第三章 线性方程组解法.doc
- 《计算方法》第三章(3-2)矩阵的三角分解.doc
- 《计算方法》第三章(3-4)迭代法.doc
- 《计算方法》第四章(4-1)代数多项式插值.doc