以下语法对于枚举是否正确?

时间:2011-04-26 04:33:47

标签: objective-c enums typedef

enum  {
  ValidationLoginFailed=2000,
  ValidationSessionTokenExpired=2001,
  ValidationSessionTokenInvalid=2002,
  ValidationEmailNotFound=2003
  ValidationSucccesMIN=ValidationLoginFailed,
  ValidationSucccesMAX=ValidationEmailNotFound,
  ValdationValidSuccessCode=9999,
  ValdationInvalidCode=10000

}; 
typedef int ValidationStatusCodes;

请帮帮我。

1 个答案:

答案 0 :(得分:2)

在您的代码中,ValidationStatusCodes表示int,而不是您的匿名enum类型。所以他们实际上并没有以任何方式联系。

但是,由于您的enum包含int值,您可以说存在某种关系。您可以传递枚举值的名称,它们将被视为intValidationStatusCodes类型。

顺便说一句,Apple做了类似于你所做的事情,除了他们typedef他们的集体名称NSIntegerNSUInteger而不是intuint }。有关示例,请参阅this question

尽管如此,更常见的做法是将typedef您的自定义类型名称直接指向匿名enum,如下所示:

typedef enum {
    ValidationLoginFailed = 2000,
    ValidationSessionTokenExpired = 2001,
    ValidationSessionTokenInvalid = 2002,
    ValidationEmailNotFound = 2003
    ValidationSuccessMIN = ValidationLoginFailed,
    ValidationSuccessMAX = ValidationEmailNotFound,
    ValdationValidSuccessCode = 9999,
    ValdationInvalidCode = 10000
} ValidationStatusCodes;