C语言–条件编译.ppt

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言–条件编译

第九章 条件编译 回顾 指针是一个变量,它存储另一个对象的内存地址 指针的声明由基本类型、星号 (*) 和变量名组成 为指针赋值,赋值运算符右侧必须是一个地址。如果是普通变量需要在前面加一个取地址运算符 ;如果是另一个指针变量或者是一个数组,不需要加 运算符 运算符 * 用于返回指针指向的内存地址中存储的值 指针的算术运算的含义是指针的移动,将指针执行加上或者减去一个整数值n的运算相当于指针向前或向后移动n个数据单元 指针可以执行比较相等的运算,用来判断两个指针是否指向同一个变量 指向数组的指针,存储的是数组中元素的地址。 目标 理解以“#”号开头编译预处理。 理解宏定义。 理解条件编译。 9.1 宏定义 9.1 宏定义 9.1 宏定义 9.2带参数的宏定义 9.2文件包含 9.3条件编译 总结 C语言程序设计教程 预处理命令是由ANSI C统一规定的,但是它不是C语言本身的组成部分,不能直接对它们进行编译。必须在对程序进行通常的编译之前,先对程序中这些特殊的命令进行“预处理”, 即根据预处理命令对程序作相应的处理。 经过预处理后程序不再包括预处理命令了,最后再由编译程序对预处理后的源程序进行通常的编译处理,得到可供执行的目标代码。 现在使用的许多C编译系统都包括了预处理、编译和连接等部分,在进行编译时一气呵成。因此不少用户误认为预处理命令是C语言的一部分,甚至以为它们是C语句,这是不对的。 C提供的预处理功能主要有以下三种:    1. 宏定义    2. 文件包含    3. 条件编译 为了与一般C语句相区别,这些命令以符号“#”开头。 9.1 宏定义 9.1.1 不带参数的宏定义 用一个指定的标识符(即名字)来代表一个字符串,它的一般形式为: #define 标识符 字符串 例:#define PI 3.1415926 把这个标识符(名字)称为“宏名”; 在预编译时将宏名替换成字符串的过程称为“宏展开”; #define是宏定义命令。 例 9.1 利用不带参数的宏计算(1)圆的面积;(2)矩形面积;(3)三角形面积。 #include stdio.h #define PI 3.14 #define a 1.2 #define b 2.4 #define s2 a*b #define x 1.2 #define y 2.4 #define s3 x*y/2.0 void main() { double r,s1; printf(“请输入圆的半径r:”); scanf(“%lf”,r); s1=PI*r*r; printf(“圆的面积s1=%lf\n”,s1); printf(“矩形的面积s2=%lf\n”,s2); printf(“三角形的面积s3=%lf\n”,s3); } 【注意点】 (1)在预定义中已经用到的符号不能在函数中再定义,如: double s2,s3,a,b,x,y; (2)在不带参数的宏定义中像a,b,x,y必须先预定义后才能在后面的宏定义中使用,即宏定义可以嵌套,宏定义的字符串中可以使用已定义的宏名,在宏展开时由预处理程序层层代换;例如: #define a 1.2 #define b 2.4 #define s2 a*b (3)在宏定义中,符号常量一般大写,本例中有大写也有小写。 (4)编译器在编译之前把程序中出现的一切宏用其对应的表达式字符串来替代,而不是计算表达式的值后才替代,即宏定义是用宏名表示的一个字符串,在宏展开时又以该字符串取代宏,这只是一种简单的代换,字符串可以含有任何字符,可以是常量,也可以是表达式,预处理程序对它不作任何检查。如有错误,只能在编译已被宏展开后的源程序时才发现。 (5)在#define语句中,宏与字符串之间用空格隔开,在表达式末尾没有分号,不然分号也会被认为是表达式的一部分而出现在程序中宏出现的位置。 (6)如果在双引号中的字符串中出现宏名,则此字符串中的和宏名相同的字符是普通字符不会被替换。 例如: printf(“矩形的面积s2=%lf\n”,s2); 该语句中的第1个s2就不会被替换。另外对“输出格式”作宏定义,可以减少书写麻烦,但可读性差。 例如: #include stdio.h #define P printf #define D “%d\n” #define F “%f\n” void main() { int a=1, c=2; float b=1.2, d=2.4; P(D F,a,b); P(D

文档评论(0)

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

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

1亿VIP精品文档

相关文档