我正在构建一个玩具解释器,我已经实现了一个包含令牌类型和值的令牌类.
令牌类型通常是一个整数,但我应该如何抽象int?
什么是更好的主意:
// #defines
#define T_NEWLINE 1
#define T_STRING 2
#define T_BLAH 3
/**
* Or...
*/
// enum
enum TokenTypes
{
t_newline = 1,
t_string = 2,
t_blah = 3
};
Run Code Online (Sandbox Code Playgroud)
Set*_*son 15
枚举可以投入到整数中; 此外,它们是在C++ 中枚举预定义值列表的首选方式.与#defines 不同,它们可以放在名称空间,类等中.
此外,如果您需要以1开头的第一个索引,您可以使用:
enum TokenTypes
{
t_newline = 1,
t_string,
t_blah
};
Run Code Online (Sandbox Code Playgroud)