为什么不用#define,非得用枚举enum?

本文介绍了如何通过使用枚举提高程序的可读性和可维护性,避免命名污染,以及枚举在类型检查、预处理和调试中的优势,对比了与#define定义的差异,特别强调了在C和C++中的不同特性。
摘要由CSDN通过智能技术生成

1.提高程序的可读性和可维护性

比如,使用 Mon 和 Fri 比使用1 和 2 更直观,再者,可在表达式中以整数变量的方式使用enum变量,在case语句中很方便,在通讯录项目中,以往用1,2,3.。。表示每一个动作(增删改查),现在可以用ADD,DEL等替换数字,更直观

注意:枚举只能在内部使用,如果要输入Day中Mon的值,只能输入1,而不是Mon

2.防止命名污染(封装)

把Mon。。。Sun放到enum里封装起来

3..使用方便,一次可定义多个变量

枚举常量默认值是0,1,2.。。。

4.与 #define定义的标识符相比,枚举有类型检查,更加严谨

比如,#define Mon 1是没有类型的,enum常量是 int 类型,因此,只要能使用int类型的地方就可以使用枚举类型

特例(C语言编译器对类型的判别不够严格,没报错,但C++会报错)

在C中,enum Day d = 5;没问题(与enum Day d = Fri; 相同),但在C++中,不能这样使用

5..enum 在预处理之后不替换,便于调试

代码实现过程:

test.c----(预处理)---->编译---->链接---->.exe (+调试(预处理之后))

如果是#define Mon 1 就把程序中所有Mon替换为1

如果是enum中的Mon,预处理后还是Mon,调试时可更好地观察Mon的值

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值