七章编译预处理命令.pptVIP

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
七章编译预处理命令

第七章 编译预处理命令 【教学要求】 1.深刻理解预处理的概念。 2.掌握预处理命令的功能及用法。 编译预处理就是在程序编译以前,对一些特殊的命令进行“预处理”,即根据预处理命令对程序作相应的处理。它不是程序的语句,也不是程序的一部分。 (举例) C提供的预处理功能主要有以下三种: 1、宏定义; 2、文件包含; 3、条件编译。 1.#include “stdio.h” 则在预处理时将stdio.h文件中的实际内容代替该命令。 2.#include A good 则在预处理时将程序中所有的A都置换为指定的字符串。 经过预处理以后程序不再包括预处理命令了,最后再由编译程序对预处理后的源程序进行通常的编译处理,得到可供执行的目标代码。 不带参数的宏定义 带参数的宏定义 格式: #define 标示符 字符串 例如, #define PI 3.1415 它的作用为:在程序中用标示符PI代替“3.1415”这个字符串,这个替代是在编译预处理时进行的。 举例 例7.1 #define PI 3.1415 main() {float i,s,r,v; printf(“input radius:”); scanf(“%f”,r); i=2.0*PI*r; s=PI*r*r; v=3.0/4*PI*r*r*r; printf(“i=%10.4f\ns=%10.4\nv=%10.4f\n”,i,s,v); } 说明: 1。宏名一般都用大写字母表示; 2、宏定义只是用宏名替代一个字符串,减少了在程序中书写某些字符串的工作量,只是一个简单的代替,不作语法检查; 3、宏定义不是语句,不必再其后加上“;”; 4、#define命令出现在函数的外面,它的有效范围是定义之后到本源文件的结束; 5、可以使用#undef命令终止宏定义的有效范围; 6、在宏定义中可以进行多层的替代。 #define R 3.0 #define PI 3.1415 #define L 2*PI*R #define S PI*R*R main() {printf(“L=%f\nS=%f\n”,L,S);} 这种宏的代替不是简单的字符串的替代,而是参数的替换。格式: #define 宏名(参数表) 字符串 例如, #define s(a,b) a*b …… area=s(3,2); 替代时展开的过程为: 例7.2 #define PI 3.1415 #define S(r) PI*r*r main() {float a,area; a=3.6; area=S(a); printf(“r=%f\narea=%f\n”,a,area); } 说明: 1.对于带参数的宏的展开依就是用实际参数代替宏定义时的形式参数; 2.在宏定义时,宏名与带参数的括号之间不应加空格,不然的话,空格也作为字符的组成部分; 3、在宏代换时,不应人为地加上括号。 例7.3 分析程序写出结果。 #define M 3 #define N M+2 #define S(N) N*N*N main() { printf(“%d\n”,S(N)); } 17 “文件的包含处理”时将一个源文件的内容完全包含在另一个文件之中。“文件的包含”是很有用的命令,它可以节省程序编制人员的重复劳动,对于频繁使用的程序模块可以编制成一个独立的文件,当用到这个模块时,只要使用#include命令将其包含进来就可以了,被包含进来的文件在包含文件中相当于得到源文件的一份拷贝,例如我们前面反复使用的#include stdio.h它是将所有的C语言的输入输出库函数都包含进来的意思。 格式:#include “文件名”或 #include 文件名 文件包含的含义 说明 一个include命令只能指定一个被包含文件,如果要包含n个文件,要有n个include命令。 如果文件1包含文件2,而文件2中要用到文件3的内容,则可在文件1中用两个include命令分别包含文件2和文件3,而且文件3应出现在文件2的之前。即在file1.c中定义: # include “file3.h” # include “file2.h” 在一个被包含文件中又可以包含另一个被包含文件,即文件包含是可以嵌套的。(如图) 在#include命令中,文件名可以双引号或尖括号括起来。二者的区别是用时,系统到存放C库函数头文件所在的目录中寻找所要包含的文件,这称为标准方式。用“ ”时,系统先在用户当前目录中查找,找不到时再按标准方式查找。 被包含文件(file2.h)与其所在的文件(即用#include命令的源文件file1.c),在预编译后

文档评论(0)

118books + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档