1 / 11
文档名称:

8 模块化程序设计(2).ppt

格式:ppt   页数:11
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

8 模块化程序设计(2).ppt

上传人:中国课件站 2011/9/6 文件大小:0 KB

下载得到文件列表

8 模块化程序设计(2).ppt

文档介绍

文档介绍:编译预处理:在源程序文件中,加入“编译预处理命令”,使编译程序在对源程序进行通常的编译(包括词法分析、语法分析、代码生成、代码优化)之前,先对这些命令进行预处理,然后将预处理的结果和源程序一起再进行通常的编译处理,以得到目标代码(OBJ文件)。
C提供的编译预处理命令
宏命令(Macro)
文件包含命令(include)
条件编译命令
这些命令均以#开头,以区别于语句。
宏(Macro)
一、不带参数的宏
一般形式: #define 标识符字符串
如: #define PI
作用:用标识符(称为“宏名”)PI代替字符串“”。
在预编译时,将源程序中出现的宏名PI替换为字符串“”,这一替换过程称为“宏展开”。
#define:宏定义命令
#undef:终止宏定义命令
[例]
#define PI
main()
{
float l,s,r,v;
printf("input radius:");
scanf("%f",&r); /* 输入圆的半径*/
l = *PI*r; /* 圆周长*/
s = PI*r*r; /* 圆面积*/
v = *PI*r*r*r; /* 球体积*/
printf("l=%\ns=%\nv=%\n",l,s,v);
}
关于宏定义的说明:
1、一般宏名用大写字母表示。(变量名一般用小写字母)。
2、使用宏可以提高程序的可读性和可移植性。如上述程序中,多处需要使用π值,用宏名既便于修改又意义明确。
3、宏定义是用宏名代替字符串,宏扩展时仅作简单替换,不检查语法。语法检查在编译时进行。
4、宏定义不是C语句,后面不能有分号。如果加入分号,则连分号一起替换。
如:
#define PI ;
area = P*r*r;
在宏扩展后成为:
area = ;*r*r;
结果,在编译时出现语法错误。
5、通常把#define命令放在一个文件的开头,使其在本文件全部有效。(#define定义的宏仅在本文件有效,在其它文件中无效,这与全局变量不同)。
6、宏定义终止命令#undef结束先前定义的宏名。
#define G
main()
 {
 }
#undef G /* 取消G的意义*/
f1()
   ┆
7、宏定义中可以引用已定义的宏名。
[]
#define R
#define PI
#deinfe L 2*PI*R
#define S PI*R*R
main()
{
printf("L=%f\nS=%f\n",L,S);
}
8、对程序中用双引号括起来的字符串,即使与宏名相同,也不替换。例如上例的printf语句中,双引号括起来L和S不被替换。
二、带参数的宏
一般形式:
#define 宏名(参数表) 字符串
带参数的宏在展开时,不是进行简单的字符串替换,而是进行参数替换。例、
[例]
#define PI
#define S(r) PI*r*r
main()
{ float a, area;
  a = ;
  area = S(a);
  printf("r=%f\narea=%f\n",a,area);
}
说明:
带参数的宏展开时,用实参字符串替换形参字符串,注意可能发生的错误。比较好的办法是宏定义的形参加括号。
[例] 返回多个值的宏定义。
#define PI
#define CIRCLE(R,L,S,V) L=2*PI*R;S=PI*R*R;V=4/3*PI*R*R*R
 
main()
{ float r,l,s,v; /*半径、圆周长、圆面积、球体积*/
scanf("%f",&r);
CIRCLE(r,l,s,v);
printf("r=%,l=%,s=%,v=%\n",r,l,s,v);
}
输出结果:
[例] 输出格式定义为宏
#define PR printf
#define NL "\n"
#define D "%d "
#define D1 D NL
#define D2 D D NL
#define D3 D D D NL
#define D4 D D D D NL
#define S "%s"
main()
{ int a,b,c,d;
char string[] = "CHINA";
a = 1; b = 2; c = 3; d = 4;
PR(D1,a);
PR(D2,a,b);
PR(D3,a,b,c);
PR(D4,a,b,c,d);
PR

最近更新

2024年吕梁师范高等专科学校单招职业倾向性考.. 40页

过敏性疾病药物治疗 36页

2026年优秀教师主持稿 36页

2024年哈尔滨传媒职业学院单招综合素质考试题.. 39页

2026年优秀员工简短自荐信 20页

2024年唐山幼儿师范高等专科学校单招职业适应.. 41页

2024年商丘学院单招职业适应性考试题库及答案.. 40页

2024年喀什职业技术学院单招职业倾向性测试模.. 40页

2024年嘉兴南湖学院单招职业倾向性测试题库带.. 43页

2024年四川三河职业学院单招职业倾向性考试模.. 40页

2024年四川交通职业技术学院单招职业适应性测.. 42页

2026年伊索寓言读后感作文800字 11页

2024年四川卫生康复职业学院单招职业倾向性测.. 39页

2024年四川城市职业学院单招职业技能考试模拟.. 41页

2024年四川幼儿师范高等专科学校单招职业倾向.. 38页

2024年四川护理职业学院单招职业倾向性考试题.. 41页

2024年四川文化传媒职业学院单招职业技能考试.. 40页

2024年四川文轩职业学院单招职业技能考试题库.. 41页

高铁动力系统绿色化 20页

2024年四川电力职业技术学院单招职业倾向性测.. 41页

2024年四川科技职业学院单招职业倾向性测试模.. 41页

2024年四川邮电职业技术学院单招职业适应性考.. 42页

2026年企业生产个人工作总结 16页

2024年大同煤炭职业技术学院单招职业技能测试.. 42页

绿色建筑技术应用-第8篇 36页

2024年大理护理职业学院单招职业技能考试模拟.. 40页

2024年大连航运职业技术学院单招职业适应性考.. 41页

ZR-003 建设单位法人授权书 1页

玩具购销合同通用6篇 10页

卫生院医疗质量、医疗安全工作责任书 11页