2013-01-18 53 views
2

我有PCH文件與此代碼:在pch文件中枚舉?

#import "ServerModel.h" 

enum { 
    SAVE = 1, 
    REMOVE = 2, 
    REMOVE_ALL = 3 
}; 
typedef NSInteger RequestType; 

,我欲以ServerModel.h RequestType但是編譯器不知道任何關於我的枚舉。我試圖爲我的枚舉創建頭文件並將其導入到pch文件中,但沒有任何改變。

所以基本的問題是:我不能在.pch文件中使用枚舉,這是.pch文件中的#import ed。

有沒有辦法解決這個問題?並且是一個把enums放在那裏的好地方?

UPD:

我試圖把所有這些枚舉在一個頭文件和#import此文件中的所有#import S IN PCH文件的末尾,這是行不通的。 但後來我把

#import "Enums.h" // my file with enums

在PCH文件的開頭,所有其它#import年代以前,它的工作。

如果有人會解釋#import在其他#import之前或之後的位置差異,我會很高興。

UPD2:

我會盡量做到更加清晰:

Enums.h與枚舉:

enum { 
    SAVE = 1, 
    REMOVE = 2, 
    REMOVE_ALL = 3 
}; 
typedef NSInteger RequestType; 

MyProject-Prefix.pch有:

#import "ServerModel.h" 
#import "Enum.h" 

ServerModel.h以下代碼:

- (void)unlinkAccountWithRequestType:(RequestType)requestType; 

我在此方法中遇到錯誤:Expected a type。我清理了我的項目並得到了相同的錯誤。

當我切換#import就像這樣:

#import "Enums.h" 
#import "ServerModel.h" 

一切都很好

+0

你在做什麼?你想要什麼?? –

+0

沒有區別。這是你的項目沒有重新編譯。只是乾淨你項目 –

+0

@InderKumarRathore我已經嘗試清理項目,但仍然有相同的錯誤,我已經更新了我的問題,我希望現在更清楚。 – derpoliuk

回答

2

案例1:如果導入這樣

#import "ServerModel.h" 
#import "Enums.h" 

然後編譯器會檢查ServerModel.h文件在Enums.h之前遇到#import "ServerModel.h"聲明。並檢查你ServerModel.h它發現一個tokenRequestType並說WTF是RequestType ??並在您的臉上拋出錯誤。

案例2:如果你寫這個

#import "Enums.h" 
#import "ServerModel.h" 

然後編譯器編譯Enums.h成功,然後編譯ServerModel.h,再次找到一個tokenRequestType並說是的,我知道這是NSInteger一個typedef其定義在Enums.h。最後它快樂地前進。