《预处理命令 》ppt课件

《预处理命令 》ppt课件

ID:26964047

大小:1.40 MB

页数:21页

时间:2018-11-30

《预处理命令 》ppt课件_第1页
《预处理命令 》ppt课件_第2页
《预处理命令 》ppt课件_第3页
《预处理命令 》ppt课件_第4页
《预处理命令 》ppt课件_第5页
资源描述:

《《预处理命令 》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第6.5章预处理命令第6.5章:预处理命令学习的意义C语言的一个重要特征是它的预处理功能。我们知道,一个高级语言源程序在计算机上运行,必须先用编译程序将其翻译为机器语言。编译包括词法分析、语法分析、代码生成、代码优化等步骤,有时在编译之前还要做某些预处理工作,如去掉注释,变换格式等。C语言允许在源程序中包含预处理命令,在正式编译之前(词法分析之前)系统先对这些命令进行“预处理”,然后整个源程序再进行通常的编译处理。从语法上讲,这些预处理命令不是C语言的一部分,但使用它们却扩展了C语言程序设计的环境,

2、可以简化程序开发过程,提高程序的可读性,也更有利于移植和调试C语言程序。本章主要介绍宏定义、文件包括和条件编译等预处理命令。学习的意义源程序生成执行文件的过程:C语言源程序.c或.cpp编译目标程序.obj链接执行程序.exe#include#definePI3.14159voidmain(){floatr=4;printf(“s=%f”,PI*r*r);}预处理命令预处理本章讨论之重点!学习目标学习内容预处理命令简介宏定义不带参数的宏定义带参数的宏定义文件包括条件编译本章小结

3、掌握#include、#define、#if、#ifdef、#else、#ifndef和#endif等命令的用法;掌握宏定义和宏替换的一般方法;掌握包含文件的处理方法;了解条件编译的作用和实现方法。6.5.1预处理命令简介预处理命令:C源程序中以#开头、以换行符结尾的行种类:宏定义#define、#undef文件包含#include条件编译#if、#ifdef、#else、#elif、#endif等其他#line、#error、#program等本章主要讨论的内容!格式:“#”开头占单独书写行语句尾

4、不加分号6.5.2宏定义宏定义分为两种:不带参数的宏定义和带参数的宏定义。1、不带参数的宏定义一般形式#define标识符单词串指令名称宏名,被定义代表后面的单词串宏体,是宏的内容文本可缺省,表示宏名定义过或取消宏体功能用指定标识符(宏名)代替字符序列(宏体)如#defineYES1#defineNO0#definePI3.1415926#defineOUTprintf(“Hello,World”);#defineSIZE10#defineINT_STR"%d"voidmain(){inta[SIZ

5、E],i;for(i=0;i=0;i--)printf(INT_STR,a[i]);}宏定义voidmain(){inta[10],i;for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=10-1;i>=0;i--)printf("%d",a[i]);}预编译处理后注意:宏替换时仅仅是将源程序中与宏名相同的标识符替换成宏的内容文本,并不对宏的内容文本做任何处理。宏定义注意事项C程

6、序员通常用大写字母来定义宏名,以便与变量名区别。如:#definePI3.14159宏定义的位置任意,但一般放在函数外面。宏定义时,如果单词串太长,需要写多行,可以在行尾使用反斜线“”续行符例如:#defineLONG_STRING"thisisaverylongstringthatisusedasanexample"宏名的作用域是从#define定义之后直到该宏定义所在文件结束#undef可终止宏名作用域#undef标识符#defineYES1voidmain(){……..}#undefYES

7、#defineYES0voidmax(){……..}YES原作用域YES新作用域宏定义可以嵌套定义,但不能递归定义#defineR2.0#definePI3.14159#defineL2*PI*R(√)#defineSPI*R*R(√)#defineMM+10(×)程序中字符串常量即双引号中的字符,不作为宏进行宏替换操作#defineXYZthisisatestprintf("XYZ");输出:XYZ,而不是:thisisatest。宏定义注意事项宏定义一般以换行结束,不要用分号结束,以免引起不必要

8、的错误#definePI3.14;a=PI*2*2;预编译处理后a=3.14;*2*2;错误!宏可以被重复定义。#defineN10//第一次宏定义intf(){N的内容是10return(N*N);}#defineN20//第二次宏定义voidmain(){N的内容是20printf("%d",N+f());}在定义宏时,如果宏是一个表达式,那么一定要将这个表达式用()括起来,否则可能会引起非预期的结果。#defineNUM110#defineNUM220#de

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。