有几种方法。更清洁的解决方案是使用枚举器,它保证具有递增的整数值:
typedef enum Difficulty {
Easy,
Normal,
Hard,
Lunatic
} Difficulty;
这可以像这样使用:
void foo(Difficulty a, Difficulty b)
{
if (a > b) {
// ...
} else
// ...
}
// ...
Difficulty a = Easy;
Difficulty b = Hard;
foo(a, b);
其他方法也是可能的。您可以只使用具有递增值的宏:
#define EASY 0
#define NORMAL 1
#define HARD 2
#define LUNATIC 3
您当前的方法也有效,但是您没有理由对常量使用实际字符。您可以只使用数值:
const char EASY = 0;
const char NORMAL = 1;
const char HARD = 2;
const char LUNATIC = 3;
当然,据我所知,没有真正的理由需要您使用char
常量。你可以int
改用。
第一种方法(使用枚举器)通常是首选,因为它为您提供了可以使用的实际 typedef,这有助于使代码更具可读性;如果你看到一个 type 的变量Difficulty
,那么你会立即知道它应该持有什么样的值。
枚举器要记住的一件事是它们与整数兼容。这意味着它们并没有真正为您提供任何类型安全性,因为您可以为它们分配任何数值;它主要是关于编写更简洁的代码,而不是类型安全。