第10章 预处理命令C语言程序设计教程 王敬华 清华大学

第10章 预处理命令C语言程序设计教程 王敬华 清华大学

ID:43169819

大小:727.00 KB

页数:21页

时间:2019-10-01

第10章 预处理命令C语言程序设计教程 王敬华 清华大学_第1页
第10章 预处理命令C语言程序设计教程 王敬华 清华大学_第2页
第10章 预处理命令C语言程序设计教程 王敬华 清华大学_第3页
第10章 预处理命令C语言程序设计教程 王敬华 清华大学_第4页
第10章 预处理命令C语言程序设计教程 王敬华 清华大学_第5页
资源描述:

《第10章 预处理命令C语言程序设计教程 王敬华 清华大学》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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

2、它们却扩展了C语言程序设计的环境,可以简化程序开发过程,提高程序的可读性,也更有利于移植和调试C语言程序。本章主要介绍宏定义、文件包括和条件编译等预处理命令。学习的意义语言程序设计教程第十章预处理命令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等命令的用法;掌握宏定义和宏替换的一般方法;掌握包含文件的处理方法;了解条件编译的作用和实现方法。语言程序设计教程第十章预处理命令C10.1预处理命令简介预处理命令:C源程序中以#开头、以换行符结尾的行语言程序设计教程第十章预处理命令C种类:宏定义#define、#undef文件包含#include条件编译#if、#ifdef、#else、#elif、#

4、endif等其他#line、#error、#program等本章主要讨论的内容!格式:“#”开头占单独书写行语句尾不加分号10.2宏定义宏定义分为两种:不带参数的宏定义和带参数的宏定义。语言程序设计教程第十章预处理命令C1、不带参数的宏定义一般形式#define标识符单词串指令名称宏名,被定义代表后面的单词串宏体,是宏的内容文本可缺省,表示宏名定义过或取消宏体功能用指定标识符(宏名)代替字符序列(宏体)如#defineYES1#defineNO0#definePI3.1415926#defineOUTprin

5、tf(“Hello,World”);#defineSIZE10#defineINT_STR"%d"voidmain(){inta[SIZE],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]);}预

6、编译处理后注意:宏替换时仅仅是将源程序中与宏名相同的标识符替换成宏的内容文本,并不对宏的内容文本做任何处理。语言程序设计教程第十章预处理命令C宏定义注意事项C程序员通常用大写字母来定义宏名,以便与变量名区别。如:#definePI3.14159宏定义的位置任意,但一般放在函数外面。宏定义时,如果单词串太长,需要写多行,可以在行尾使用反斜线“”续行符例如:#defineLONG_STRING"thisisaverylongstringthatisusedasanexample"宏名的作用域是从#define

7、定义之后直到该宏定义所在文件结束#undef可终止宏名作用域#undef标识符#defineYES1voidmain(){……..}#undefYES#defineYES0voidmax(){……..}YES原作用域YES新作用域宏定义可以嵌套定义,但不能递归定义#defineR2.0#definePI3.14159#defineL2*PI*R(√)#defineSPI*R*R(√)#defineMM+10(×)程序中字符串常量即双引号中的字符,不作为宏进行宏替换操作#defineXYZthisisatest

8、printf("XYZ");输出:XYZ,而不是:thisisatest。语言程序设计教程第十章预处理命令C宏定义注意事项宏定义一般以换行结束,不要用分号结束,以免引起不必要的错误#definePI3.14;a=PI*2*2;预编译处理后a=3.14;*2*2;错误!宏可以被重复定义。#defineN10//第一次宏定义intf(){N的内容是10return(N*N);}#defineN20//第

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

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

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