Ant*_*ony 2 macros objective-c c-preprocessor
小问题我在一个特定时间在屏幕上有大量物体(敌人),并且无法重新定义它们的价值.我设置我的敌人从屏幕上的3开始.
我的目标是根据当前分数改变敌人数量.
我已经附上了以下代码的片段.
#define kEnemies 3
- (void) EnemyIncrease
{
if (self.score>=100) {
#define kEnemies 4
}
}
Run Code Online (Sandbox Code Playgroud)
//我还试过其他的事情
#define kEnemies 3
- (void) EnemyIncrease
{
if (self.score >=100) {
#undef kEnemies
#define kEnemies 6
}
}
Run Code Online (Sandbox Code Playgroud)
非常感谢一些帮助.
我现在已将代码更改为以下内容
int numberOfEnemies;
if (self.score>=0) {
numberOfEnemies = 3
}
else if (self.score>=100) {
numberOfEnemies = 4
}
Run Code Online (Sandbox Code Playgroud)
但是现在的问题是,当分数满足新条件时,数组不会更新numberOfEnemies.
for(int i = 0; i < numberOfEnemies; i++)
Run Code Online (Sandbox Code Playgroud)
道歉我仍然是编码和尝试修改现有代码的新手
对宏进行预处理,这意味着在编译其余代码之前对它们进行处理.
取出你的代码,这意味着预处理器看到了这一点(使用你的第二个例子).最终,价值kEnemies是6:
#define kEnemies 3
#undef kEnemies
#define kEnemies 6
Run Code Online (Sandbox Code Playgroud)
将#defines用于变量并不是真的可行,我只将它们用于常量.
您可以使用成员变量:
int numberOfEnemies;
...
if (self.score >=100)
{
numberOfEnemies = 6
}
Run Code Online (Sandbox Code Playgroud)
(我删除了k前缀,因为此样式适用于常量)
| 归档时间: |
|
| 查看次数: |
3214 次 |
| 最近记录: |