- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
9-预处理命令
第9章预处理命令 1-宏定义 2- “文件包含”处理 3-条件编译 从内容来看,C语言源程序由两部分构成: 一部分是C语言的各种语句,包括变量定义、函数声明、函数调用等等; 另一部分则是预处理命令。 预处理,顾名思义,就是在源程序正式编译之前要处理的一些命令。 C的预编译处理程序首先读入程序员写的源程序,经过预处理后形成新的源程序,然后再将这个新形成的源程序输入给C的编译器进行编译。 为了与一般的C语句相区别,C语言的预处理命令都以“#”号开头。 1- 宏定义 由于预编译器处理宏时,并不对宏的内容文本进行任何处理,仅仅是一个文本替换操作,因此,程序员在定义宏时,如果宏是一个表达式,一定要将这个表达式用()括起来,否则可能会引起非预期的结果。例如,下表左边的程序在定义宏时,没有将宏表达式括起来: P193 例9.5 由于带参宏在使用时,参数大多是表达式,宏内容本身也是表达式,因此,不但需要将宏参数用()括起来,而且还要将整个宏内容括起来。否则可能引起非预期结果。例如,下面的程序中,MULTI宏的参数没有括起来: 2- “文件包含”处理 例如,如果有文件a.h,它的内容如下: 源程序文件a.c用#include命令包含了a.h文件 条件编译命令大致有3种: 1、#if 条件1 源程序段1 #else 源程序段2 #endif 其中, 当某个条件被满足时,这个条件下面的源程序段是有效的,否则无效。 每个条件必须是一个常量表达式,通常会用到宏名。 命令都独占一行。 2、#ifdef 宏名1 源程序段1 #else 源程序段2 #endif 其中, #endif不能没有,它是#ifdef命令的结尾。 “#ifdef 宏名”的含义是判断是否定义了宏,它等价于#if defined(宏名) 3、#ifndef 宏名 源程序段1 #else 源程序段2 #endif 其中, #else可以没有,但#endif不能没有,它是#ifndef命令的结尾。 本章作业 9.1 9.3 9.5 * 不带参数的宏替换 1、形式: #define 宏名 字符串/宏体 其中:①、#define是宏定义命令; ②、宏名为C语言标识符,它是所定义的符号常量的名字; ③、字符串形式的常量表达式可以包含任意字符。 2、功能:将程序中所有出现的宏名用宏体替换 (通常用于定义符号常量) 3、例: #define PI 3.1415926 #define LETTER abcdefg 程序员输入的源程序 #define NUM1 2 #define NUM2 5 #define BASE NUM1+NUM2 main() { int a=3,b=3; a=a*BASE; b=b*BASE; printf(a=%d,b=%d\n,a,b); } 预编译器处理后的新源程序 main() { int a=3,b=3; a=a*2+5; b=b*2+5; printf(a=%d,b=%d\n,a,b); } 如果将BASE的定义改成下面的定义,就可以避免上述错误了: #define BASE (NUM1+NUM2) 4、说明: ①、宏名一般习惯用大写字母表示,以示与变量名相区别; ②、宏定义不是C语句,不必加分号,否则连分号一起替换; #define PI 3.1415926; area=PI*r*r; area=3.1415926;*r*r; ③、#define命令一般写在程序开头,但也可以在其它位置; ④、可以用#undef命令终止宏定义的作用域; #define G 9.8 …… #undef ⑤、宏定义中还可以引用已定义的宏名: #define R 3.0 #define PI 3.1415926 #define L 2.0*PI*R #define S PI*R*R ⑥、对于双引号括起来的字符串内的字符,即使与宏名相同也不进行替换; printf(“L=%f\n”, L); printf(“L=%f\n”, 2.0*PI*R); ⑦、宏定义是专门用于预处理命令的一个专用名词,与定义变量的含义不同,只做字符替换,不分配内存空间。 #define SMALLSIZE 512 #define LARGESIZE (512+200) main() { int a; scanf(%d,a); if(aSMALLSIZE) printf(small\n); else if (a=LARGESIZE*2) printf(medium\n); else printf(too large\
您可能关注的文档
最近下载
- 《背影》课内阅读训练.doc VIP
- Amason艾茉森电子乐器VP-73GH说明书.pdf
- 《机械臂结构》课件.ppt VIP
- 护理学本科毕业论文范文范文本科护理护理学毕业论文范文.doc
- 11CD008-4 固定资产投资项目节能评估文件编制要点及示例(电气)(OCR).pdf VIP
- 单片机课程设计报告 简易电子琴 .pdf VIP
- 网课章节答案《科学启蒙》超星尔雅答案2023.pdf VIP
- 吉他六线谱空白模版A4 六线 2mm 8行 通用版2打印模板.pdf VIP
- 安全生产规章制度和操作规程完整版.pdf VIP
- 国家开放大学《管理英语4》边学边练Unit 1-4(答案全).docx VIP
有哪些信誉好的足球投注网站
文档评论(0)