XCode - 重新定义宏

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)

道歉我仍然是编码和尝试修改现有代码的新手

Jam*_*ter 6

对宏进行预处理,这意味着在编译其余代码之前对它们进行处理.

取出你的代码,这意味着预处理器看到了这一点(使用你的第二个例子).最终,价值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前缀,因为此样式适用于常量)