在Swift中有条件地排除代码

Fab*_*cci 9 ifndef swift

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

#if taxi_coops
func pippo(){
    println("pippo");
}
#else
func triggerActiveLocationUpdate(entering:Bool){}
#endif
Run Code Online (Sandbox Code Playgroud)

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

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

par*_*par 16

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

#if !os(OSX)
    // compiled when not on OS X
#endif
Run Code Online (Sandbox Code Playgroud)


Fab*_*cci 10

问题是关于在表单中的Other Swift Flags文件中复制配置

-D选项

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

#if option || !option2
......
#elseif option3
......
#endif
Run Code Online (Sandbox Code Playgroud)