【发布时间】:2013-04-26 21:39:11
【问题描述】:
在使用编译器指令时,我不清楚以下两个代码 sn-ps 中哪一个是正确/首选的,以及为什么。似乎我见过的大多数开发人员和开源项目都使用第一种,但我也看到第二种也经常使用。
#ifdef DEBUG
[self doSomethingOnlyWhenDebugging];
#endif
对比
#if DEBUG
[self doSomethingOnlyWhenDebugging];
#endif
上面的哪个代码 sn-ps 更适合仅在调试时运行代码,为什么?我的猜测是,如果 DEBUG 被定义为 TRUE 或 FALSE,第一个将运行,而第二个将仅在 DEBUG 被定义并设置为 TRUE 时运行。对吗?
【问题讨论】:
-
#ifdef只是测试符号是否已定义。#if测试符号的值。所以#define FOO 0将使#ifdef FOO为真,但#if FOO为假,因为它正在做#if 0。 -
您应该尝试查找“根”定义并确定该值是 1/0 值还是存在/不存在值。弄错它们可能会产生“意想不到的”后果。
标签: ios objective-c xcode