C语言-第7节 编译预处理.ppt

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 编译预处理 预处理命令:#define,#undef,#include,#else,#error…… 预处理命令行可位于程序中任意位置 预处理命令行的作用域:定义位置开始到文件结尾 无参宏定义 一般形式: #define 宏名 宏体 define:宏定义命令 宏名:由标识符定义 宏体:为一字符串(常量、表达式、格式串等) define、宏名、宏体之间用空格隔开 宏调用格式:宏名 宏替换:编译预处理时进行宏展开,对宏定义命令行后出现的宏名用宏体代替。 实 例 #define PI 3.1415926 main() {float a,s,r; printf(Input radius r:); scanf(%f, r); a=2*PI*r; s=PI*r*r; printf(r=%10.4f\na=%10.4f\ns=%10.4f\n,r,a,s); } 说 明 宏替换时只是简单地以宏体取代宏名,预处理程序并不作语法检查。如有错误,只能在编译时发现。 #define PI 3.141593; …… L=2*PI*r; 宏展开后,该语句为:L=2*3.141593;*r; 宏名在源程序中若用引号引起来,则预处理程序不对其作宏代换。如:#define no 220 main() { printf(“no”); } 带参宏定义 一般形式: #define 宏名(形参表) 宏体 宏调用:宏名(实参表) 宏替换:编译预处理时用宏体代换带参宏,同时用实参代换形参 例如: # define AS(x,y,z) x+y+z …… sum=AS(3,4,5); 宏定义时,在宏名与带参数的括号之间不能有空格,否则将空格以后的字符都作为宏体. 例如: #define s (r) PI*r*r 是指一个源文件可将另一个源文件的全部内容包含进来 一般形式: #include “文件名” 或 #include 文件名 所包含的文件可以是标准文件或用户自定义文件 例如: #include “math.h” 预编译时,预处理程序把指定的文件插入该命令行位置取代该命令行,从而把指定的文件和当前的源程序文件连成一个源文件。 本章小结 本章介绍的预编译功能(宏定义、文件包含、条件编译)是C语言特有的,有利于程序的可移植性,增加程序的灵活性。 C语言中的宏定义分为两种:不带参数的宏定义和带参数的宏定义。 使用标准库函数时,应当包含相应的头文件。也可设计自己的头文件,将常用内容包含进去。 *   预处理:是指在进行编译之前所作的工作。 预处理由预处理程序负责完成。当对一个源文件进行编译时, 编译系统将自动引用预处理程序对源程序中的预处理命令作处理, 处理完毕后自动进入对源程序的编译。 7.1 宏定义:#define 7.2 文件包含:#include 第7章 编译预处理 宏定义是由源程序中的宏定义命令完成的。 在C语言中,“宏”分为有参数宏和无参宏两种。 7.1 宏定义: #define 如:无参宏 #define PI 3.1415926 如:有参宏 # define AS(x,y,z) x+y+z 宏替换后: a=2*3.1415926*r; s=3.1415926*r*r; 宏调用 出错 不替换 宏定义可以嵌套: 在宏体中可以使用已经定义的宏名。在宏展开时由预处理程序层层代换。 以下程序中的for循环执行的次数是( )。 #define N 2 #define M N+1 #define NUM 2*M+1 main() { int i; for(i=1;i=NUM;i++)printf(“%d\n”,i); } A. 5 B. 6 C. 7 D. 8 说 明 思考 #define M y*y+3*y main(){  int s,y;  printf(input a number: );  scanf(%d,y);  s=3*M +4*M +5*M;  printf(s=%d\n,s); } y*y+3*y y*y+3*y y*y+3*y (y*y+3*y) (y*y+3*y) (y*y+3*y) 继续理解

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档