关于 编译预处理.pptVIP

  1. 1、本文档共16页,可阅读全部内容。
  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文档。上传文档
查看更多
关于 编译预处理

2005年3月 预 处 理 命 令 授课教师:崔虹燕 hongyan316@163.com hongyan316@126.com 补充 预处理命令 宏定义 1 概述 在C语言中,除了有完成程序特定功能所使用的语句之外,还有一类以“#”开头的命令,称为编译预处理命令,预处理命令不是C语言本身的组成部分,其作用只是在系统编译源文件之前按照预处理的功能对文件进行相应的预处理操作。 包括三种预处理命令: (1)宏定义 (2)文件包含 (3)条件编译 2 宏定义 宏定义 用预处理命令#define在文件开始位置指定的预处理操作。 分为以下两种形式: (1)不带参数的宏定义 (2)带参数的宏定义 2 宏定义 不带参数宏定义(符号常量) 用一个指定的标识符代表一个常量。 格式如下: #define 标识符 常量 标识符称为宏名,常量称为宏体。 在编译预处理时系统自动将文件中的宏名用宏体替换,称为宏展开。 2 宏定义 说明: 为与变量名区别,宏名一般习惯用大写字母表示; 如:#define N 10 #define NULL 0 使用宏定义可以提高程序的通用性和可读性,易于修改; 2 宏定义 说明: 宏定义不是C语句,因此在末尾不必加“;”,若有,则将作为宏体一起处理。 如:#define PI 3.14159; area=PI*r*r; 替换后,等价于area=3.14159;*r*r; 预处理时,对宏名只作简单的替换,不进行语法检查,只在编译程序时,才能查错; 2 宏定义 说明: 宏定义的有效范围为宏定义位置到本源文件结束,也可以使用#undef命令终止宏定义的作用范围; 宏定义时,可以引用已经定义的宏名; 程序中用“”括起来的与宏名同名的字符串不进行置换; 宏定义只作简单替换,系统不分配内存空间。 2 宏定义 2 宏定义 带参数宏定义 格式 #define 宏名(参数表) 宏体 作用 预处理时不仅进行宏名和宏体的简单替换,同时还要进行参数的替换。 如:#define S(a,b) a*b area=S(2,3); 替换后,等价于area=2*3; 2 宏定义 注意:对于带参数的宏定义,宏体及其各个参数应该用圆括号括起来。 如:#define PI 3.14 2 宏定义 说明: 宏名与宏体之间以空格相隔,但宏名中不能有空格。如: #define S (r) (PI*(r)*(r)) area=S(a) 等价于:area=(r) (PI*(r)*(r))(a) 2 宏定义 带参数的宏定义在形式上类似函数,有宏名也带有参数(类似于函数名和形参),但两者的区别如下: (1)函数调用有程序控制流程的转移,而带参数的宏定义仅仅是表达式的简单替换; (2)函数有类型,并且有参数的传递,而带参数的宏定义没有; (3)函数定义后占用存储空间,且可能会返回值,而带参数的宏定义不占用存储空间,且没有返回值的概念。 3 文件包含 文件包含是指一个源文件可以将另一个源文件的的整个内容包含进来。 文件包含的格式: #include 文件名 系统只到存放C库函数头文件所在的目录中寻找要包含的文件,称为标准方式。 #include “文件名” 系统首先在用户当前目录中检索,若没找到,则按标准方式检索。 3 文件包含 说明: 文件包含可以将指定文件中的全部内容直接替换该文件包含命令; 一个#include只能包含一个文件; 文件包含可以嵌套使用。 举例 * * C 语言程序设计 文件包含 概述 #define PI 3.14159 void func(); void main() { printf(“main:%f\n” ,PI); func(); } void func() { printf(“func:%f\n”, PI); } #undef PI #define W 80 #define L (W+50) void main() { printf(“W=%d,L=%d\n”,W,L); } #define S(r)

文档评论(0)

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

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

1亿VIP精品文档

相关文档