【问题标题】:Is the following syntax is correct for an enum?以下语法对于枚举是否正确?
【发布时间】:2011-04-26 04:33:46
【问题描述】:
enum  {
  ValidationLoginFailed=2000,
  ValidationSessionTokenExpired=2001,
  ValidationSessionTokenInvalid=2002,
  ValidationEmailNotFound=2003
  ValidationSucccesMIN=ValidationLoginFailed,
  ValidationSucccesMAX=ValidationEmailNotFound,
  ValdationValidSuccessCode=9999,
  ValdationInvalidCode=10000

}; 
typedef int ValidationStatusCodes;

请帮帮我。

【问题讨论】:

  • 虽然不会影响语法的有效性,但您在ValidationSucccesMINValidationSucccesMAX 中将Success 拼错为Succces

标签: objective-c enums typedef


【解决方案1】:

在您的代码中,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;

【讨论】:

  • 谢谢。就我而言。我的方法的返回类型是枚举。那么我应该在括号内给出什么返回类型。
  • @user:无论你是typedef int还是typedef enum {...},你的方法都应该返回ValidationStatusCodes
猜你喜欢
  • 2023-04-07
  • 2019-01-24
  • 1970-01-01
  • 2023-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-04
相关资源
最近更新 更多