【发布时间】:2014-03-30 02:28:40
【问题描述】:
我想检查变量名是否已经定义。 我不在乎它是否等于nil。如果尚未定义变量,我将在定义变量的宏中使用它。但如果它被定义,宏只会设置变量而不是重新定义它(这实际上会阻止编译器构建)。
#define newAnimation()\
if (/* variableName is being used */) {\
anim = [CABasicAnimation animation];\
} else {\
CABasicAnimation* anim = [CABasicAnimation animation];\
}
然后我会像这样使用宏。
newAnimation();
anim.keyPath = @"position.x";
anim.toValue = @10;
[self.namedSubview addAnimation:anim forKey:nil];
newAnimation();
anim.keyPath = @"position.y";
anim.toValue = @50;
[self.otherSubview addAnimation:anim forKey:nil];
注意:带有宏的部分只是我对这个问题的用例。你的答案应该在一个方法中起作用。
【问题讨论】:
-
你想完成什么?你更大的目标是什么?
-
@JoshCaswell 我刚刚澄清了。
-
什么情况下不知道变量是否被声明了?
标签: objective-c variables macros c-preprocessor