PRECAP:我已关注Why can I not use my constant in the switch - case statement in Objective-C ? ,但问题仍然存在。此外,我不允许在上面的链接中评论我的问题,这就是为什么我再次提出这个问题。
在iOS应用中,我有 constants.h :
int const Category_Default = 1;
在另一个文件中(比如 test.m )我用这种方式使用它:
switch(//someVariable) {
case Category_Default:
//do something
default:
//do something
}
不幸的是编译器给我一个错误,因为案例标签没有减少到整数常量。
我知道必须在编译时知道常量的值才能在case
中的switch
中使用。
我甚至按照Why can I not use my constant in the switch - case statement in Objective-C中的建议在.h文件中初始化了常量,但错误仍然存在。
注意:在这种情况下,我不想使用#define
或enum
。
对此的任何帮助都将非常感激。
答案 0 :(得分:0)
这是编译器规则我的朋友。您需要使用枚举或#define。
案例标签在根据编译器变化时可以更改 编译器将switch语句视为一组gotos。这就是为什么它不能成为变量