【C语言】第九篇·枚举、定义类型和宏定义
来源:互联网 发布:恒生指数期货模拟软件 编辑:程序博客网 时间:2024/06/11 23:41
一、枚举类型
1. C语言提供了一种称为“枚举”的类型。在枚举类型中列举出所有可能的取值,被说明为该枚举类型的变量的取值不能超过定义的范围。
2. 枚举类型属于基本数据类型,而不是一种构造类型,因为它不能分解为任何基本数据类型。
3. 定义:enum 枚举类型名{枚举值表};
例如:enum pSex{Female,Male};
4. 枚举变量定义:enum pSex p1,p2,p3;
二、typedef关键字
1.定义: typedef 原类型名 新类型名;
例如:给上面的枚举类型起个别名,type enum pSex PSEX;(为了与元类型区别,一般采用大写)
2. 有时候宏定义可以完成typedef的功能,但是宏定义是由预处理完成的,而typedef是在编译时完成的,后者更为方便。
三、预处理指令
1. 概念:以“#”开头的预处理命令。如包含命令#include,宏定义命令#define。
2. C语言提供了多种预处理命令:宏定义,文件包含,条件编译等。
四、宏定义
1. 概述:被定义为宏的标识符称为“宏名”。在编译预处理时,对程序中出现的所有的宏名,都用宏定义的字符串去替换,这称为宏代换或宏展开。
2. 分类:有参数宏和无参数宏
3. 无参数宏定义:#define 标识符 字符串。字符串可以是:常量,表达式,格式串
4. 有参数宏定义:
在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数。对于带参数的宏,在调用中,不仅要宏展开,而且要用实参去代替形参。
#define 宏名(行参表) 字符串
有参宏使用注意事项:例如:
#include <stdio.h>
#define M(x) x*x+x+2
void main()
{
int k = M(6); //k=6*6+6+2=44
printf("k = %d\n",k);
}
1)宏的形参之间可以出现空格,但是宏名和形参之间不能出现空格
2)有参的参数最好用括号括起来。
3)可以用宏来定义多个语句
5. #define 和 typedef
宏定义只是简单的字符串代换,实在预处理时完成。
typedef是在编译时完成的,它不是简单的代换,而是对类型说明符的重新定义。被命名的标识符具有类型定义说明的功能。
6. 示例程序
#include <stdio.h>#define MAX(a,b) a>b ?a:b //宏定义三目运算,判断两数的大小void main(){int x,y;x=100;y=10;printf("%d\n",MAX(x,y)); //100}
五、条件编译
1. 为什么要使用条件编译
1)按不同的提交去编译不同的程序部分,因而产生不同的目标代码文件。有利于程序的移植和调试。
2)条件编译可以条件语句来实现。但是条件语句会对整个源程序进行编译,生成的目标代码很长,而采用条件编译,则根据条件对其中的程序段1或者其它满足条件的程序段进行编译,生成的目标文件相对较短。
2. #ifdef条件编译指令的一般形式
#ifdef 标识符
程序段1
#else
程序段2
#endif
3. 示例程序
程序1:成绩等级判断
#include <stdio.h>#define score 60void main(){#if score < 60printf("E\n");#elif score < 70printf("D\n");#elif score < 80printf("C\n");#elif score < 90printf("B\n");#elseprintf("A\n");#endif}
程序2:错误调试
#include <stdio.h>#define DEBUG1 1#define DEBUG2 1void test1(){int a=0; #if DEBUG1 == 1 a=10; #else a=100; #endifprintf("a = %d\n",a);}void main(){void test1();test1();}
0 0
- 【C语言】第九篇·枚举、定义类型和宏定义
- c语言中枚举类型变量定义
- 【C语言】C语言之枚举定义和宏定义的技巧1
- C语言(结构体、枚举类型、类型定义)
- C语言的枚举与宏定义
- C语言类型定义
- 宏定义和枚举类型的区别
- 宏定义和枚举类型的区别
- C语言编程入门——枚举与宏定义
- C语言回顾之结构体、枚举、宏定义、typedef、extern和static的使用
- C语言枚举enum的定义
- 枚举类型的定义和应用
- 2 强类型定义语言和弱类型定义语言
- 枚举类型的定义
- 枚举类型的定义
- SYSTEM_INFORMATION_CLASS枚举类型定义
- C语言宏定义和宏定义函数
- C语言宏定义和宏定义函数
- 【C语言】第四篇·函数调用
- 【C语言】第五篇·进制转换
- 【C语言】第六篇·数组
- 【C语言】第七篇·指针
- 【C语言】第八篇·内存管理和结构体
- 【C语言】第九篇·枚举、定义类型和宏定义
- 【C语言】第十篇·文件操作
- C语言通讯录
- 【OC语言】第一篇·Objective-C概述和面向对象
- 【OC语言】第二篇·对象的作用、字符串类型以及多文件开发
- 【OC语言】第三篇·类方法的使用、匿名类以及封装
- 【OC语言】第四篇·类的继承、多态、类对象以及SEL类型
- 【OC语言】第五篇·@property和@synthesize关键字、动态类型检测和构造方法
- web_custom_request应用示例-飞机订票系统中的删票操作