如何解决仅在设置标志时如何将代码包括在构建中?
| 我在我的应用程序中添加了一些调试代码,仅在需要时才调用。我记得有一种“ 0”可用于有条件地将代码包含到源文件中。 例如,我可能有这样的事情:IFDEF kDebugEnabled == YES {
// some debugging code here
}
然后,仅当kDebugEnabled为YES时,才将这段代码编译为二进制文件。
我该怎么做?
请注意:我不想使用项目编译器标志设置。我只想定义一个布尔值(或正好达到目的的东西),然后将其设置为true或false,然后例如在我的App Delegate中轻松设置它。我发现很难导航到项目编译器设置,搜索标志然后进行设置。我知道有一个调试标志可能有用。
解决方法
您正在寻找的是:
#ifdef __YOURSYMBOL__
<conditional code>
#endif
您可以像这样以编程方式定义__YOURSYMBOL__
:
#define __YOURSYMBOL__
__YOURSYMBOL__
可以是对您有意义的任何字符串,以记住您为什么要包含/排除该代码段。
DEBUG
常数是一个特殊的预处理器常数,在构建代码进行调试时,编译器将为您特别定义该常数,因此您可以简单地使用它:
#ifdef DEBUG
<conditional code>
#endif
考虑到这是您使用的C预处理程序,而不是C,也不是Objective-C,因此根本不可能进行类似于kDebugEnabled == YES
的测试(其中kDebugEnabled是Objective-C变量)。您可以为常量定义整数值,如下所示:
#define __LOG_LEVEL__ 3
然后测试一下:
#if __LOG_LEVEL__ == 3
...
Endif
, 据我所知,如果不使用编译器标志,您的类中的代码将无法编译成最终产品。但是,使用DEBUG标志比您想象的要容易得多。如果您使用的是Xcode 4,则默认情况下会为其设置。
#ifdef DEBUG
// Your debug-only code goes here
#endif // DEBUG
默认情况下,Xcode具有两种配置,分别是Debug
和Release
。使用调试构建配置等时,它会设置DEBUG编译器标志,然后您可以使用该标志有条件地编译代码。完全不需要弄乱编译设置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。