任何人都可以向我解释我们这样做的目的是什么
#if
// block of codes goes here
#endif
答案 0 :(得分:2)
它们是C预处理程序指令。 http://en.wikipedia.org/wiki/C_preprocessor
答案 1 :(得分:1)
他们是preprocessor directives
。预处理程序指令是程序代码中包含的行,它们不是程序语句,而是预处理程序的指令。这些行总是以哈希符号(#)
开头。预处理程序在实际编译代码开始之前执行,因此预处理程序在语句生成任何代码之前摘要所有这些指令。
这些预处理程序指令仅扩展到一行代码。一旦找到换行符,就会认为预处理程序指令结束。预处理器指令末尾不需要分号(;)。预处理程序指令可以扩展到多行的唯一方法是在行尾添加换行符后面加一个反斜杠()。
有关详细信息,请参阅Preprocessor directives和Using Objective-C Preprocessor Directives
答案 2 :(得分:0)
正如其他人所提到的,带有#前缀的标签是预处理器的指令,导致修改后续编译的代码。更具体地说,您提供的示例与条件编译有关。一个常见的用例涉及在DEBUG和RELEASE模式下编译,其中预处理器将包含或排除所选代码,如下所示:
#define DEBUG
#ifdef DEBUG
// block of codes goes here - only survives preprocessing if in DEBUG mode
#endif
在这种情况下,代码可以记录输出消息或执行您只想在DEBUG模式下发生的其他操作。如果您希望在DEBUG模式下编译,则定义DEBUG;否则,你简单评论一下。或者,可以使用编译器开关执行DEBUG的定义。进一步的讨论,以及预处理器一般用于调试模式条件编译,请参阅问题987637/define-debug-1。