[英]Objective C “#if” syntax
当我看一些类时,我会看到“pound if”或#if
语法让我感到有些困惑。
例如:
#if someConstant == someNumber
do something
#elif
etc
与:
if (someConstant == someNumber)
do something
else if {
do more stuff
}
有什么区别,为什么要使用#if
?
#if
等是预处理程序指令。 这意味着它们在编译之前处理,而不是在运行时处理。 例如,在定义仅在构建debug
而不是release
时编译的调试行为时,这可能很有用:
#if DEBUG
#define ISRelease(x) [x release]
#else
#define ISRelease(x) [x release], x = nil
#endif
(代码由Jeff LaMarche的博客提供 。)
这样,您就不需要在提交应用程序并删除大量调试代码之前浏览整个应用程序的代码。 这只是使用这些指令的一个小例子。
#if
是预处理程序指令 。
if
是语言结构 。
不同之处在于编写最终程序的方式。 当您使用#if
,该指令的结果是最终程序将包含在这些行上的结果。 使用语言构造时,将在运行时评估传递给构造的表达式,而不是编译时 。
以前的答案涵盖了从调试到术语的#if
用法,并且错过了一个更常见的用法: #if
用于评论大块代码。 当程序员需要删除已包含注释的内容时,这很有用。
#if 0
a lof of C code with /* style */ comments included
#endif
我经常使用它。 优于任何其他#if
和评论风格 - 它实际上并不关心其中大部分破碎的语法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.