gpt4 book ai didi

objective-c - 带 case/switch 的 Objective C 全局常量

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:11:53 25 4
gpt4 key购买 nike

有什么方法可以在 Objective 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 语句中使用的数据。

关于objective-c - 带 case/switch 的 Objective C 全局常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11235174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com