Objective C"#if"语法

joh*_*ers 19 syntax objective-c c-preprocessor

#if当我看一些课时,我看到"pound if"或语法有点困惑.

例如:

#if someConstant == someNumber
  do something
#elif
  etc
Run Code Online (Sandbox Code Playgroud)

与:

if (someConstant == someNumber) 
   do something
else if {
   do more stuff
}
Run Code Online (Sandbox Code Playgroud)

有什么区别,为什么要使用#if

Stu*_*art 29

#if等是预处理器指令.这意味着它们在编译之前处理,而不是在运行时处理.这可能很有用,例如,在定义仅在构建时编译的调试行为,debug而不是release:

#if DEBUG
    #define ISRelease(x) [x release]
#else
    #define ISRelease(x) [x release], x = nil
#endif
Run Code Online (Sandbox Code Playgroud)

(代码由Jeff LaMarche的博客提供.)

这样,您就不需要在提交应用程序并删除大量调试代码之前浏览整个应用程序的代码.这只是使用这些指令的一个小例子.


Jac*_*kin 11

#if是一个预处理器指令.

if是一种语言结构.

不同之处在于编写最终程序的方式.使用时#if,该指令的结果是最终程序将包含在这些行上的结果.使用语言构造时,将在运行时评估传递给构造的表达式,而不是编译时.