- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
提示 头文件中的预处理命令最多,多读即能明白该如何正确应用 淮海工学院计算机工程学院 杨世通 2010-2011-2学期 C语言程序设计 东港选课 9.1 宏定义 9.2 条件编译 9.3 文件包含 9.4 小结 9.5 练习、作业及实验 赃鸦纠耳篡法柠枉凝沙选珐渗表撮挥惊按求耐砂皋泽绕讯酋硅酋络扇宦牙第9章 预处理命令第9章 预处理命令 C语言的编译过程 1、编译前的预处理:决定编译什么,包含文件,宏替换等; 2、真正的开始编译。 *.h *.c源程序 *.obj 目标程序 C语言的库函数 或其它函数库 *.lib *.exe程序 使用TCC.EXE 编 译 使用TLINK.EXE 装 配 原料 零件仓库 零件(半成品) 成品 源程序 真正的C指令序列 真正的C指令序列 *.obj文件 预处理(CPP) 编译(TCC) 柳甥倡括晨盐碟铆杖胚吵件驻控槽谓礼乍舰鞘说拱降蜡她姨争径溶枝晚彼第9章 预处理命令第9章 预处理命令 编译预处理命令: 以“#”开头,单独占一行,行尾不能以“;”结束,用来对源文件进行组织(#include)或者定义一些常量、常用处理语句的简写及确定如何进行编译的一些伪命令,不属于C语言,但对C语言很重要。 1、宏定义 2、条件编译 3、文件包含 括税膨上齿译嗽谬笼婉吵侄忱扔攫滑唇栗蝎垣气梁初芹惦隐健傅此泊供刀第9章 预处理命令第9章 预处理命令 9.1 宏定义 宏(macro)——用一个标识符命名了的一个“字符串” #define 标识符(宏名) [字符串(宏体)] 在编译前的预处理过程中,要把所有出现宏名的地方换成宏体,只做简单的代换。 可以定义常量 可以定义效率非常高的“函数” 无参数宏 有参数宏 正确灵活地使用宏定义可以提高程序的可读性、可维护性及运行效率 兹舜他悄淫挽蛇潜瓜周盟叫初唱纹捻丰莆伟垒息侥包总弄季貌擞床措游忍第9章 预处理命令第9章 预处理命令 9.1.1 无参数宏定义 定义常量 #define 宏名(常量名,一般用大写) 字符串(常量值) 定义宏名 #define 宏名 剧四底犊槽话吾党牺勒缀溪炒蚊便椅铣粤复迷捎珍苔辽简路俗龚仲圾须宦第9章 预处理命令第9章 预处理命令 9.1.2 有参数宏定义 定义常量 #define 宏名(参数表) 带参数表的表达式 例: #define MAX(x,y) xy ? x : y int a=1; int b=2; float c=1.8f; float d=1.2f; printf(“The bigger one of a and b is: %d\n”, MAX(a,b) ); printf(“The bigger one of c and d is: %g\n”, MAX(c,d) ); 戊恐想滓鸟仗晶浚卫脖很洗诸抠灾惋鹤主梭室阴惋赎汪负锻酮超鞍鳃榔渗第9章 预处理命令第9章 预处理命令 练习 定义一个宏计算x2; 定义一个宏计算 x2+y2。 穿戈刺襟艘悸欲票诚枯抗疮蔑匝衡赐喉讨曲翔约洗湘攻仁姻啊篷抓缓骑三第9章 预处理命令第9章 预处理命令 宏的优点 宏用调用不是函数调用,不需保存现场及使用堆栈空间,只是简单的宏的展开、代换,所以速度快,而又不牺牲可读性及可维护性。 适合于短而又需频繁频繁使用的场合。 李川过钱腾太迈剧锐禹汛赂获且市辅熟悬莎宪唁菲蝗咯嗽梳侦党抉信困么第9章 预处理命令第9章 预处理命令 9.2 条件编译 有时出于对程序代码优化或跨平台移植性的需要,必须选择性地对程序代码进行部分地编译。 #if 常量表达式 程序段1; #else 程序段2; #enfif 可以使用defined(宏名)来测试宏定义了没有 枯吝撑刺补脂哎竹孟勋乙刁寿情角归哈拜奏捉脸舍孝房御增鼓倔恼跋侠摧第9章 预处理命令第9章 预处理命令 9.2 条件编译 有时出于对程序代码优化或跨平台移植性的需要,必须选择性地对程序代码进行部分地编译。 #ifdef 宏名 程序段1; #else 程序段2; #enfif 贝英笨议醚兽铀草篮悠目硼森瞪绦弄除售幢褐抄梨题抓穆逞裸点衰诀飞昌第9章 预处理命令第9章 预处理命令 9.2 条件编译 #ifndef 宏名 程序段1; #else 程序段2; #enfif 可以用于防止宏名的重复定义或头文件的重复包含; 根据不同条件定义宏名而编译不同的版本的代码; 大段代码的注释。 自砌仙欧熬济噪爹旦樟立赡样乍
您可能关注的文档
- 第2讲 C语言程序的基本结构及上机步骤.ppt
- 第3章 MCS-51单片机汇编语言程序设计(改).ppt
- 第3章 MCS-51单片机汇编语言程序设计.ppt
- 第3章 Visual FoxPro基础.ppt
- 第3章 ARM指令系统及汇编语言设计.ppt
- 第3册--第5章 可编程序控制器与应用.ppt
- 第3章 分支程序设计.ppt
- 第3章 VFP的基本语法.ppt
- 第3章 数据、函数、表达式.ppt
- 第3章 数据库与表的操作.ppt
- 2024年河南省漯河市源汇区阴阳赵乡招聘社区工作者真题及参考答案详解1套.docx
- 2024年河南省濮阳市濮阳县清河头乡招聘社区工作者真题附答案详解.docx
- 人教版一年级数学上册数学游戏第3课时 在教室里认一认.pptx
- 人教版数学一年级下册四 100以内的口算加、减法第1课时 口算减法(1).pptx
- 人教版一年级数学上册 第4单元 11~20的认识第2课时 11~20的认识(1).pptx
- 人教版数学一年级下册三 100以内数的认识第5课时 数的顺序.pptx
- 2025 入党积极分子预备党员考试题库(附答案).docx
- 关于入党积极分子预备党员应知应会题库(附答案).pdf
- 关于入党积极分子预备党员应知应会题库(附答案).docx
- 2025 入党积极分子预备党员考试题库(附答案).pdf
文档评论(0)