C教程-指针、结构、联合和枚举(七)_计算机等级指导/

typedef int SIGNED_INT;
使用说明后, SIGNED_INT就成为int的同义词了, 此时可以用SIGNED_INT 定
义整型变量。
例如: SIGNED_INT i, j;(与int i, j等效)。
但 long SIGNED_INT i, j; 是非法的。
typedef同样可用来说明结构、联合以及枚举。
说明一个结构的格式为:
typedef struct{
数据类型 成员名;
数据类型 成员名;
...
} 结构名;
此时可直接用结构名定义结构变量了。例如:
typedef struct{
char name[8];
int class;
char subclass[6];
float math, phys, chem, engl, biol;
} student;
student Liuqi;
则Liuqi被定义为结构数组和结构指针。
在第二节讲过的文件操作中, 用到的FILE就是一个已被说明的结构, 其说明
如下:
typedef struct
{
short level;
unsigned flags;
char fd;
unsigned char hold;
short bsize;
unsigned char *buffer;
unsigned char *curp;
unsigned istemp;
short token;
} FILE
这个结构说明已包含在stdio.h中, 用户只要直接用FILE 定义文件指针变量
就可以。事实上, 引入类型说明的目的并非为了方便, 而是为了便于程序的移植。

预 处 理 指 令

由ANSI的标准规定, 预处理指令主要包括:
#define
#error
#if
#else
#elif

#endif
#ifdef
#ifndef
#undef
#line
#pragma
由上述指令可以看出, 每个预处理指令均带有符号"#"。下面只介绍一些常
用指令。
1. #define 指令
#define指令是一个宏定义指令, 定义的一般形式是:
#define 宏替换名字符串(或数值)
由#define指令定义后, 在程序中每次遇到该宏替换名时就用所定义的字符
串(或数值)代替它。
例如: 可用下面语句定义TRUE表示数值1, FALSE表示0。
#define TRUE 1
#define FALSE 0
一旦在源程序中使用了TRUE和FALSE, 编译时会自动的用1和0代替。
注意:
1. 在宏定义语名后没有";"
2. 在Turbo C程序中习惯上用大写字符作为宏替换名, 而且常放在程序开头。
3. 宏定义还有一个特点, 就是宏替换名可以带有形式参数, 在程序中用到
时, 实际参数会代替这些形式参数。
例如:
#define MAX(x, y) (x>y)?x:y
main()
{
int i=10, j=15;
printf("The Maxmum is %d", MAX(i, j);
}
上例宏定义语句的含义是用宏替换名MAX(x, y)代替x, y中较大者, 同样也
可定义:
#define MIN(x, y) (x
程序也允许嵌入其它文件, 例如:
main()
{
#include
}
其中help.c为另一个文件, 内容可为
printf("Glad to meet you here!");
上例编译时将按集成开发环境的Options/Directories/Include directories
中指定的包含文件路径查找被嵌入文件。
4. #if、#else、#endif指令
#if、#els和#endif指令为条件编择指令, 它的一般形式为:
#if 常数表达式
语句段;
#else
语句段;
#endif
上述结构的含义是: 若#if指令后的常数表达式为真, 则编译#if到#else 之
间的程序段; 否则编译#else到#endif之间的程序段。
例如:
#define MAX 200
main()
{
#if MAX>999
printf("compiled for bigger ");
#else
printf("compiled for small ");
#endif
}
5. #undef指令
#undef指令用来删除事先定义的宏定义, 其一般形式为:
#undef 宏替换名
例如:
#define TRUE 1
...
#undef TURE
#undef主要用来使宏替换名只限定在需要使用它们的程序段中。

Published At
Categories with 认证考试
Tagged with
comments powered by Disqus