在Swift中有条件地排除代码

时间:2015-07-14 14:54:16

标签: swift ifndef

我正在尝试为特定目标排除Swift文件的某些部分。然而,我没有找到#ifndef objective-c指令的替代品,而且如果我使用的那种形式:

#if taxi_coops
func pippo(){
    println("pippo");
}
#else
func triggerActiveLocationUpdate(entering:Bool){}
#endif

预处理器完全忽略该指令并尝试编译triggerActiveLocationUpdate。请注意 #if taxi_coops 指令在同一文件的其他部分中受到尊重。

有没有办法简单地在Swift中排除一些代码和/或为什么我的修复不起作用?

2 个答案:

答案 0 :(得分:15)

在Swift中,使用#if !代替#ifndef,例如:

#if !os(OSX)
    // compiled when not on OS X
#endif

答案 1 :(得分:9)

问题在于以

形式复制其他Swift Flags 文件中的配置
  

-D选项

显然Swift忽略预处理器字段中的标志。现在它接受||,&&而且!没有任何语法问题:

#if option || !option2
......
#elseif option3
......
#endif