2012-05-10 278 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