C语言,第1张

C语言,第2张

C程序的源代码可以包含各种编译指令,称为预处理指令。虽然它们实际上不是C语言的一部分,但它们扩展了C编程的环境。本节将介绍如何应用预处理器和注释来简化程序开发过程并提高程序的可读性。
4.7.1C语言预处理器
ANSI标准定义的C语言预处理器包括以下命令:
# define
# error
# include
# if
# else[/]迪恩
# ifdef
# ifndef
# line
# pragma
非常明显。所有预处理命令都以符号#开始,下面将介绍。
4.7.2#define
命令#define定义一个标识符和一个字符串。每次在源程序中遇到这个标识符,它都被一个定义的字符串所替换。ANSI标准将标识符定义为宏名,替换过程称为宏替换。命令的一般形式是:
# define identifier sing
注意,该语句中没有分号。标识符和字符串之间可以有任意数量的空单元格。字符串一旦开始,就只能以新的一行结束。
比如要TRUE取值1,FALSE取值0,可以解释两个宏# define
# define TRUE 1
# define FALSE 0
。这使得每次在源程序中用0或1替换TRUE或FALSE成为可能。
比如在屏幕上打印“012”:
printf(" % d % d % d ",FALSE,TRUE,TRUE 1);
定义宏名后,它可以成为其他宏名定义的一部分。例如,下面的代码定义了1、2和3的值。
# DEFINE ONE 1
# DEFINE TWO ONE 1
# DEFINE THREE ONE 2
一定要明白,宏替换只是用字符串替换标识符。因此,如果要定义一个标准的错误消息,可以编写如下代码:
# definee _ ms " standard error on input \ n "
printf(e _ ms);
当编译器遇到标识符E_MS时,它会将其替换为“输入时的标准错误\n”。对于编译器,printf()语句实际上采用以下形式:
printf("标准输入错误\ n;")
如果字符串中有标识符,则不会被替换。示例:
#定义XYZ这是一个测试



printf(" XYZ ");
这一段没有打印“这是一个测试”,而是“XYZ”。
如果字符串长度超过一行,可以在行尾加一个反斜杠继续该行,例如:
# define long _ string“这是一个很长的\
Sing,用作示例”
C语言程序一般用大写字母来定义标识符。这种约定使得人们在阅读程序时能够快速找到哪里有宏替换。就是把所有的#定义放在文件的开头或者一个单独的文件里(用#include访问),而不是分散在整个程序里。
宏替换最常见的用途是定义常量的名称和程序中的“游戏数”。例如,一个程序定义了一个数组,它的几个子程序想要访问这个数组。不是直接用常数固定数组的大小,而是用名字定义(当数组的大小需要改变时)。
#define MAX_SIZE100
浮动余额[MAX _ SIZE;]
define命令的另一个有用特性是宏名可以带参数。每次遇到宏名,连接到它的参数都被程序中的实际参数所替换。例如:

  当编译该程序时,由MIN(a,b)定义的表达式被替换,x和y用作操作数,即printf()语句被代换后取如下形式:
  printf("the minimum is:%,d"(x

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C语言

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情