有没有办法在目标C中使用在case/switch语句中工作的全局int常量?这里的技术(http://stackoverflow.com/questions/538996/constants-in-objective-c)允许我在任何地方访问常量,但不允许我将它们放入switch语句中。
在. h
FOUNDATION_EXPORT const int UNIT_IDLE;
FOUNDATION_EXPORT const int UNIT_DEFEND;
在. m
int const UNIT_IDLE = 0;
int const UNIT_DEFEND = 1;
错误为“表达式不是整数常量表达式”
当使用将在switch语句中使用的常量时,我通常将枚举与typedef语句一起使用。
例如,这将在共享的. h文件中,例如ProjectEnums.h:
enum my_custom_unit
{
MyCustomUnitIdle = 1,
MyCustomUnitDefend = 2
};
typedef enum my_custom_unit MyCustomUnit;
然后,我可以在我的. c、.m、.cpp文件中使用类似于以下switch语句的代码:
#import "ProjectEnums.h"
- (void) useUnit:(MyCustomUnit)unit
{
switch(unit)
{
case MyCustomUnitIdle:
/* do something */
break;
case MyCustomUnitDefend:
/* do something else */
break;
default:
/* do some default thing for unknown unit */
break;
};
return;
};
这也允许编译器在编译时验证传递给方法并在switch语句中使用的数据。
我认为您最好的选择是使用枚举类型
。只需在头文件中声明一个类型,然后您就可以在switch语句中使用它了。
班课
typedef enum{
kEditGameModeNewGame = 0,
kEditGameModeEdit = 1
}eEditGameMode;
类. m
eEditGameMode mode = kEditGameModeEdit;
switch (mode) {
case kEditGameModeEdit:
// ...
break;
case kEditGameModeNewGame:
// ...
break;
default:
break;
}
祝你好运!
官方指南说您应该使用“具有整数值的相关常量组的枚举”这可能会解决您的问题并改进代码。