Является ли следующий синтаксис правильным для перечисления? - PullRequest
0 голосов
/ 26 апреля 2011
enum  {
  ValidationLoginFailed=2000,
  ValidationSessionTokenExpired=2001,
  ValidationSessionTokenInvalid=2002,
  ValidationEmailNotFound=2003
  ValidationSucccesMIN=ValidationLoginFailed,
  ValidationSucccesMAX=ValidationEmailNotFound,
  ValdationValidSuccessCode=9999,
  ValdationInvalidCode=10000

}; 
typedef int ValidationStatusCodes;

пожалуйста, помогите мне.

1 Ответ

2 голосов
/ 26 апреля 2011

В вашем коде ValidationStatusCodes означает int, а не ваш анонимный тип enum.Так что они на самом деле никак не связаны.

Однако, поскольку ваш enum содержит int значений, вы могли бы сказать, что есть какая-то связь.Вы можете передать имена перечисленных значений, и они будут считаться типа int или ValidationStatusCodes.

Кстати, Apple делает нечто похожее на то, что вы делаете, за исключением того, что они typedef ихколлективные имена до NSInteger или NSUInteger вместо int или uint.См. этот вопрос для примера.

С учетом всего вышесказанного более распространенной практикой является typedef имя вашего пользовательского типа непосредственно для анонимного enum, например:

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