BuildYourOwnLisp Why we need enum
2016-06-08 00:00
489 查看
枚举
你或许已经注意到了,lval的
type和
err字段的类型都是
int,这意味着它们皆由整数值来表示。
之所以选用
int,是因为我们将为每个整数值赋予意义,并在需要的时候进行解读。举例来说,我们可以制定这样的规则:
如果
type为 0,那么此结构体表示一个数字。
如果
type为 1,那么此结构体表示一个错误。
这是个简单而高效的方法。
但如果我们的代码中充斥了类似于 0 和 1 之类的“魔法数字”(Magic Number),程序的可读性就会大大降低。如果我们给这些数字起一个有意义的名字,就会给代码阅读者一些有用的提示,提高可读性。
C 语言为此提供了语言特性上的支持——枚举(
enum)。
/* Create Enumeration of Possible lval Types */ enum { LVAL_NUM, LVAL_ERR };
enum语句声明了一系列整型常量,并自动为它们赋值(译者注:从 0 开始,依次递增)。上面的代码展示了如何为
type字段声明枚举值。
另外,我们还需要为
error字段也声明一些枚举值。目前,我们需要声明三种类型的错误,包括:除数为零、操作符未知、操作数过大。代码如下:
/* Create Enumeration of Possible Error Types */ enum { LERR_DIV_ZERO, LERR_BAD_OP, LERR_BAD_NUM };
相关文章推荐
- UICollectionViewcell 不显示
- UIKit: 动态生成label
- 百度Ueditor编辑器的使用
- iOS开发-UIActivityIndicatorView简单使用
- Interview Questions and Ans
- 快速理解RequireJs
- Handler机制源码探索(一):UI线程中Handler的初始化流程
- Starting MySQL.The server quit without updating PID file
- hdoj-2604-Queuing
- 调试报“The source file is different from when the module was built.”问题的解决
- wpf 绑定数据无法更新ui控件可能存在的问题
- 解决中文乱码的filter(包括get和post提交两种方式)
- 关于UGUI(0):写在前面
- Implement Stack using Queues
- 1711 Number Sequence
- easyUI-tree
- discuz QQ互联登陆出现(1054) Unknown column “conuintoken” in “field list”
- 95. Unique Binary Search Trees II
- java笔记day22—GUI(1)
- deque