电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

全国计算机等级考试2C课程第10讲 预编译处理

18页
  • 卖家[上传人]:a**
  • 文档编号:50942198
  • 上传时间:2018-08-11
  • 文档格式:PPT
  • 文档大小:157KB
  • / 18 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、全国计算机等级考试 2C课程第十讲 编译预处理 命令*1作者:张旭仟 版权所有 欢迎盗版编译预处理命令的基本概念lANSI C规定,可以在源程序中加入一些“编译预处理命令” ,以改进程序设计环境,提高编程效率。例如:l#define PI 3.14159l#include l虽然这些“编译预处理命令”也是由ANSI C统一规定的,但它 们并非C语言的组成部分。含有这种 “编译预处理命令”的源 程序,只有在正式编译之前先对它们进行“预处理”后,才能 被正常编译成“目标程序”。l语言提供的预处理命令主要有:宏定义命令、文件包含命 令、条件编译命令。l为了与一般语句相区别,这些编译预处理命令”都以 “” 号开头。Date2作者:张旭仟 版权所有 欢迎盗版不带参数的宏替换命令l不带参数的宏替换命令l一般形式: define 标识符 字符串l例如: define PI 3.1415926l其中“define”是宏定义命令, PI 称为“宏名”, “3.1415926”称为宏体。l作用是将程序中在该命令以后出现的所有的PI都用 “3.1415926”代替。l在预编译时将宏名替换成字符串的过程称为“

      2、宏展开”。Date3作者:张旭仟 版权所有 欢迎盗版不带参数的宏替换命令l说明: (1)define命令、宏名、宏体之间必须用空格隔开; (2)由于宏定义不是C语言程序语句,行的末尾不需要加“;” 号;如果加了分号则会作为宏体的一部分被一起置换。 (3)宏名习惯上一般用大写字母表示,以便与普通变量名区 别。但这并非语法规定,即用小写字母并不属于语法错 误; (4)程序中被加上双引号“”的宏名,将不能被替换,如: printf(“PI”);语句中的PI不会被替换为3.1415926; (5)适当使用宏名代替一个字符串,可以减少程序中重复书 写某些复杂数据的工作量。Date4作者:张旭仟 版权所有 欢迎盗版不带参数的宏替换命令l例如: #include #define PI 3.1415926 void main() float l,s,r,v;printf(“input radius:“);scanf(“%f“,l=2.0*PI*r;s=PI*r*r;v=4.0/3*PI*r*r*r;printf(“l=%10.4fns=%10.4fnv=%10.4fn“,l,s,v); 运行情况如下:

      3、 1=25.1328 s=50.2655 v=150.7966Date5作者:张旭仟 版权所有 欢迎盗版不带参数的宏替换命令(6) 宏定义是用宏名代替一 个字符串,只作简单置 换,并不对字符串(宏 体)作正确性检查。 (7) #define命令通常写在 文件开头或函数之前。 默认情况下,宏名的有 效范围,是从宏定义命 令之后开始,直到本源 文件结束。 (8)当然,也可以用#undef 命令,提前终止宏定义 的作用范围。如:#define G 9.8 _ void main() G的有效范围 _ #undef G f1() Date6作者:张旭仟 版权所有 欢迎盗版不带参数的宏替换命令(9) 在进行宏定义时,可以引用已定义的宏名,宏展开时将 会层层置换。例如: #include #define R 3.0 #define PI 3.1415926 #define L 2*PI*R #define S PI*R*R void main() printf(“L=%fnS=%fn“,L,S); 编译预处理时:printf(“L=%fnS=%fn”,L,S); 语句将被展开为 printf(“L

      4、=%fnS=%fn”,2*3.1415926*3.0,3.1415926*3.0*3.0);Date7作者:张旭仟 版权所有 欢迎盗版带参数的宏定义l带参数的宏定义l作用:不只进行简单的字符串替换,还进行参数的替换 。 l一般形式为: define 宏名(参数表)字符串 例如: #define S(a,b) a*b area=S(3,2);说明: 程序中用和分别代替宏定义中的 形式参数和b,用*代替S(3,2) 。 因此赋值语句展开为:area=3*2Date8作者:张旭仟 版权所有 欢迎盗版带参数的宏定义l对带参的宏定义是这样展开置换的:l对带实参的宏,如S(3,2),基本原则也是按define命令行中指定 的字符串从左到右进行置换的。l但如果字符串中包含有宏名中定义的形参,如: “*”中的a和b, 则要用程序中相应的实参(可以是常量、变量或表达式)来代替; 其他字符,如“*”中的*号,则原样保留。图中S(3,2)将被置 换为3*2,其中3和 2是实参,将代替 指定字符串a*b中 的a和b,*不是参 数,则被原样保留 。Date9作者:张旭仟 版权所有 欢迎盗版带参数的宏定义l例如:

      5、 #include #define PI 3.1415926 #define S(r) PI*r*r void main() float a,area;a=3.6;area=S(a); printf(“r=%fnarea=%fn“,a,area); 说明: 赋值语句“area=S(a);” 展开后被替换为: area=3.1415926*; 运行结果: r=3.600000 area=40.715038Date10作者:张旭仟 版权所有 欢迎盗版文件包含命令l所谓“文件包含”,是指一个源文件可以将另外一个 源文件的全部内容包括进来。l语言提供了#include命令用来实现“文件包含”的操 作。其一般形式为: #include “文件名“ 或 #include l说明: (1)在#include命令中,文件名可以用双撇号或尖括号括起 来。 (2)一个#include命令只能指定一个被包含文件,如果要包 含个文件,要用个#include命令。Date11作者:张旭仟 版权所有 欢迎盗版文件包含命令l说明: (3) 在一个被包含文件中又可以包含另一个被包含文件,即 文件包含是可以嵌套的。如下

      6、图所示 #include A#include BCfile1.cfile2.cfile3.cCBCDate12作者:张旭仟 版权所有 欢迎盗版小练习:1、以下叙述中错误的是 (2008年4月) A)在程序中凡是以“”开始的语句行都是预处理命令行 B)预处理命令行的最后不能以分号表示结束 C)#define MAX是合法的宏定义命令行 D)C程序对预处理命令行的处理是在程序执行的过程中进 行的 Date13作者:张旭仟 版权所有 欢迎盗版小练习:2、有以下程序(2010年3月) #include #define SUB(a) (a)-(a) main() int a=2,b=3,c=5,d; d=SUB(a+b)*c; printf(“%dn“,d); 程序运行后的输出结果是 A)0B)-12C)-20D)10Date14作者:张旭仟 版权所有 欢迎盗版小练习:3、有以下程序(2009年9月) #include #define f(x) x*x*x main() int a=3,s,t; 3+1*3+1*3+1 s=f(a+1); t=f(a+1); printf(“%d,%d“,s,t

      7、); 程序运行后的输出结果是 A)10,64 B)10,10 C)64,10D)64,64Date15作者:张旭仟 版权所有 欢迎盗版小练习:4、有以下程序 #include #define PT 3.5; #define S(x) PT*x*x; mian() int a=1, b=2; printf(“%4.1fn”,S(a+b);3.5*1+2*1+2 程序运行后输出的结果是 A)14.0 B)31.5 C)7.5 D)程序有错无输出结果Date16作者:张旭仟 版权所有 欢迎盗版小练习:5、有一个名为init.txt的文件,内容如下: #define HDY(A,B) A/B #define PRINT(Y) printf(“y=%dn”,Y) 有以下程序 #include “stdio.h“ #include “init.txt“ main() int a=1,b=2,c=3,d=4,k; k=HDY(a+c,b+d); PRINT(k); 下面针对该程序的叙述正确的是(D) A)编译有错 B)运行出错 C)运行结果为 y=0 D) 运行结果为 y=6Date17作者:张旭仟 版权所有 欢迎盗版Thank listenThank listen!Date18作者:张旭仟 版权所有 欢迎盗版

      《全国计算机等级考试2C课程第10讲 预编译处理》由会员a**分享,可在线阅读,更多相关《全国计算机等级考试2C课程第10讲 预编译处理》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.