自动为#defines分配唯一值

时间:2014-07-21 08:39:19

标签: objective-c enums c-preprocessor

我有一长串#define语句(Objective-C),这些语句被分配了唯一的整数值。

实际值无关紧要;他们只需要非零和独特。这些值用于创建NSNumbers和switch语句。

例如:

#define FUNCTION_s   1
#define FUNCTION_a   7
#define FUNCTION_kk  3

用法:

NSArray *array = @[ @(FUNCTION_s), @(FUNCTION_a) ];
// ...
switch ( val ) {
    case FUNCTION_kk:
        // code
    break;
}

我想简化列表,因此我不必担心实际数字或意外使用重复值。我经常重新排列列表以便于阅读,所以我已经使用过哪些数字并不总是很明显。

是否有一种方法,类似于使用枚举,会自动为每个#define分配唯一值?

1 个答案:

答案 0 :(得分:1)

您可以使用枚举。

typedef NS_ENUM(NSUInteger, FUNCTIONS) {
    FUNCTION_s = 1,
    FUNCTION_a,
    FUNCTION_kk,
};

FUNCTION_a将为2,kk将为3.它是增量。

FUNCTION val;
// set val

switch(val)
{
    // casese
}