Xcode马虎导致的坑

在开发中经常会因为自己的马虎遇到一些bug,给自己挖了一个坑,这里记录一下我自己给自己挖的坑。

switch issue

平时在开发中有时会用到switch语句,大学时候老师教我们使用if..else..来代替switch,但是有时会我更喜欢switch语句,举个栗子🌰:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
typedef enum {
HBHellotOne = 1,
HBHelloTwo,
HBHelloThree,
HBHelloFour,
}HBHello;
void sayHelloType(HBHello hello) {
switch (hello) {
case HBHellotOne:
HBHelloTwo:
print("one and two\n");
break;
case HBHelloThree:
print("three\n");
break;
case HBHelloFour:
print("four\n");
break;
default:
break;
}
}
int main(int argc, char * argv[]) {
sayHelloType(HBHellotOne);
sayHelloType(HBHelloThree);
return 1;
}
1
2
3
4
5
6
A. one and two
three
B. 编译不过
C. three

猜猜以上会输出什么结果?说什么都不如在机器上敲一遍自己看结果来的真切。
实际结果:

1
three

可是预期的结果:

1
2
one and two
three

Xcode是可以正常编译运行的,仔细查看了代码才知道原因,HBHelloOne、HBHelloTwo本意是使用同一个处理,结果在书写的时候漏掉了关键字case

1
case HBHelloTwo:

引以为戒!

以上:如果有错误或者任何问题欢迎指正(评论系统集成的Disqus,所以你可能看不见🙈🤷‍♂️)!!!

如果你还没有顺手的科学上网工具,推荐一个我正在用的SSR服务, 多条线路可供选择使用,一年不限流量 ¥200 。现在购买的时候输入优惠码 qj80 还享受 八折 优惠!