大学课件C语言第九章 预处理命令_第1页
大学课件C语言第九章 预处理命令_第2页
大学课件C语言第九章 预处理命令_第3页
大学课件C语言第九章 预处理命令_第4页
大学课件C语言第九章 预处理命令_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

回顾函数定义函数递归调用全局和局部变量静态和动态存储问题常用函数独立一个文件,使用时需要包含调试程序和使用程序时需要不同的输入方式等符号常量的使用等第九章预处理命令Focus掌握宏定义和文件包含的使用

编译预处理命令以

#

开头;

编译预处理命令放在文件开头,后面不加;号。编译预处理主要有三种:1)宏定义

2)文件包含

3)条件编译

#definePRNprintf(“%d,%f”,k,x);voidmain(){intk=3;floatx=8.975;

PRN}一.不带参数的宏定义

#definePI3.1415926

第一节宏定义说明:1.宏名习惯用大写字母表示。

2.

可代替字符串、数值、表达式、语句等。3.宏代换在编译以前进行并完成。

4.宏展开仅忠实替换,不做语法检查。结果:20S(4,5)5*4S(x+2,y+2)y+2*x+2()()()()

25.6二.带参数的宏定义-----参数替换

#defineS(t,w)w*tvoidmain(){floatx=5.5,y=12.6;

printf(“%d\n”,S(4,5));

printf(“%f\n”,S(x+2,y+2));}1)替换时,可以是各种类型的量。2)替换时不做计算。3)可嵌套定义

#definePI

3.1415926#defineS(r)PI*r*r说明第二节文件包含处理

文件包含编译预处理命令格式:

#include<文件名>

#include“文件名”

<文件名>

表示在源文件所在目录以外的目录中查找要

包含的文件

“文件名”

表示先在源文件所在目录中查找要包含文件,

若没找到再在源文件所在目录以外的目录中

查找要包含的文件

f1.c#include“f2.c”p2p1p1f1.cf2.cp2使用文件包含指令时应注意几个问题:

(1)一个#include指令只能包含一个文件,要包含多个文件就要用多个#include指令

(2)文件包含可以嵌套,比如文件file1中含有指令:

#include″f2.c″

而在文件f2.c中又有:

#include<math.h>

#include″f3.c″

则file1也把f2.c中包含的文件全部包含进来。

(3)被包含文件中的全局变量也是包含文件中的全局变量,因此在包含文件中对这些量不必再加

ertern说明即可引用。

(4)被包含文件的扩展名一般用.h(头),表示是在文件开头加进来的,其内容可以是程序文件或数据文件,也可以是宏定义、全局变量声明等。这些数据有相对的独立性,可被多个文件使用,不必在多个文件中都去定义,而只在一个文件中定义,其他文件中包含这个定义文件即可。

第三节条件编译其中<标识符>若已用#define命令定义过,则编译{程序段1}形式1.#ifdef<标识符>

{程序段1}

#else{程序段1}

#

endif

例:

#include<stdio.h>#defineTtruemain(){#ifdefT

printf(“编译程序1”);#else

printf(“编译程序2”);#endif}

main(){printf(“编译程序1”);}等价于形式2#ifndef<标示符>

{程序段1}

#else{程序段2}

#endif

逻辑和作用与形式1相反#defineORDER1main(){intk;#ifORDERfor(k=1;k<11;k++)printf(“%d”,k);#elsefor(k=11;k<1;k--)printf(“%d”,k);#endif}

main(){intk;for(k=1;k<11;k++)printf(“%d”,k);}形式3

#if<表达式>

{程序段1}#else{程序段2}#endif课堂例题课后练习2.预处理命令可能具有如下特点:

(1).均以“#”开头(2).必在程序开头

(3).后面不加分号(4).在真正编译前处理正确的说法是,预处理命令具有以下__________条特点:

A1,2B1,3,4

C1,3D1,2,3,41.编译预处理包括__________A.文件包含、宏定义和预编译B.构造工程文件

C.语句注释D.编辑源程序3.假设有宏定义:#defineNUM15

#defineDNUMNUM+NUM

则表达式

DUNM/2+NUM*2

的值为:__________524.程序段如下:#defineN2

#defineMN+1

#defineNUM2*M+1voidmain(){inti;intsum=0;for(i=1;i<=NUM;i++)sum+=i;}sum

最后的值为:__________21此时才替代2*M+12*N+1+12*2+1+1

6

5.下列程序的输出结果为__________#definep(v,format)printf(“v=%format”,v)#defines(x)3.5*x*x

main(){inta=1,b=2;floats1;s1=s(a+b);p(s1,f);}Av=14

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论