2011-04-26 54 views
0
enum { 
    ValidationLoginFailed=2000, 
    ValidationSessionTokenExpired=2001, 
    ValidationSessionTokenInvalid=2002, 
    ValidationEmailNotFound=2003 
    ValidationSucccesMIN=ValidationLoginFailed, 
    ValidationSucccesMAX=ValidationEmailNotFound, 
    ValdationValidSuccessCode=9999, 
    ValdationInvalidCode=10000 

}; 
typedef int ValidationStatusCodes; 

請幫我一把。以下語法對於枚舉是否正確?

+1

雖然它不會影響到語法的正確性,你拼錯'成功''Succces'在'ValidationSucccesMIN'和'ValidationSucccesMAX'中。 – icktoofay 2011-04-26 04:41:06

回答

2

在您的代碼中,ValidationStatusCodes表示int,而不是您的匿名enum類型。所以他們實際上沒有任何連接。

但是,由於您的enum包含int的值,因此可以說存在某種關係。您可以傳遞枚舉值的名稱,它們將被視爲intValidationStatusCodes類型。

順便說一句,蘋果做類似的東西給你做什麼,除非他們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; 
+0

謝謝。在我的情況。我的方法的返回類型是一個枚舉。所以我應該在括號內給出什麼樣的返回類型。 – user709877 2011-04-26 05:34:17

+0

@user:無論你使用'typedef int'還是'typedef enum {...}',你的方法都應該返回'ValidationStatusCodes' – BoltClock 2011-04-26 05:35:15

+0

好的。謝謝。 – user709877 2011-04-26 05:40:32