2011-10-27 51 views
7

好的,這與問題"Constants in Objective C"有關。全局常量文件中的Objective-C typedef枚舉

我創建Constants.h及其相應Constants.m文件:

// Constants.h 
extern int const BOOKS; 
typedef enum SSDifficultyLevel { 
    EASY = 0, 
    MEDIUM = 1, 
    HARD = 2 
} SSDifficultyLevel; 

// Constants.m 
int const BOOKS = 66; 

我的問題:是OK的enumtypedefConstants.h倒是?代碼編譯良好(迄今爲止沒有警告或錯誤),但我想知道這是否是正確的方法,因爲相關問題中提供的解決方案涉及拆分常量的定義和聲明。

謝謝。

回答

3

好吧,一個常量和一個枚舉服務於不同的目的(雖然有一些明顯的重疊)。所以,除非你有足夠的理由來打破這個規則,否則不要太離開人們的期望。

個人而言,我不太喜歡「全局常量標題」,因爲您通常應該將這些聲明與它們的用法相關聯。例如,Apple的框架通常在與它們相關的接口附近聲明枚舉,並且通知名稱與類相同。

除此之外,你已經正確地聲明瞭事情。

如果您使用C++或objC++,那麼您將需要修復extern,因爲名稱可能不同,並且可能導致鏈接錯誤。

這樣的事情應該做的伎倆:

#if defined(__cplusplus) 
#define MONExternC extern "C" 
#else 
#define MONExternC extern 
#endif 

,那麼你將宣佈BOOKS像這樣:

MONExternC int const BOOKS; 

另外一個音符,這可能只是爲了說明在你的例子:這些標識符非常短,並且很容易與其他標識符發生衝突。

+1

嗨賈斯汀:我會繼續開始實施這個。非常感謝您的回答和評論,我感謝您的幫助。 – rtovars