枚举
你或许已经注意到了,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 };
当前内容版权归 NoahDragon 译 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 NoahDragon 译 .