使用枚举或#define?

sub*_*sub 3 c++

我正在构建一个玩具解释器,我已经实现了一个包含令牌类型和值的令牌类.

令牌类型通常是一个整数,但我应该如何抽象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)

  • @sub:`令牌myToken(t_newline)有什么问题;`? (2认同)