2012-05-10 289 views
25

我似乎無法讓#elifdef在我的iOS項目中工作。如果我這樣做:Objective-C是否支持#elifdef?

#ifdef X 
const Foo bar[] = { ... }; 
#else 
const Foo bar[] = { ,,, }; 
#endif 

然後頂一個(在X)被突出顯示,並且底部有一個沒有。如果我這樣做:

#ifdef W 
const Foo bar[] = { ;;; }; 
#elifdef X 
const Foo bar[] = { ... }; 
#else 
const Foo bar[] = { ,,, }; 
#endif 

然後底部的一個(在其他下方)得到突出顯示,而前兩個不顯示。爲什麼?還有另外一種方法我應該這樣做嗎?我有三個目標,他們都使用相同的m文件。然而,每個目標的常量有點不同,所以我用這種方法分開它們。

+4

我從未使用過預處理命令;我一直使用'#elif defined(THING)'。 – trojanfoe

+0

@trojanfoe謝謝!那樣做了!我對預處理器命令幾乎一無所知,但谷歌搜索引發了很多使用#elifdef的人,所以我嘗試使用它。 – borrrden

回答

70

你可以簡單的寫:

#elif defined X 

應與所有ANSI-C兼容的編譯器兼容。

+0

優秀!我太年輕了,沒有經歷過C,所以我不知道很多這種東西><。我也不太清楚我應該在Google上搜索的查詢。它不會讓我在9分鐘內接受你的答案,但我會回來的。 – borrrden

+6

我現在吃我的腳,因爲我看到你和我一樣年紀...> _ < – borrrden

+0

看一看:http://en.wikipedia.org/wiki/C_preprocessor – MByD