我使用的switch语句基本上是这样的:
switch (command):
case '+':
int key;
scanf("%i", &key);
//do stuff
break;
case '-':
int key;
scanf("%i", &key);
//do stuff
break;
....
似乎我不允许在案例阶梯中重新声明int key
,即使它们作为单独的操作块而破坏。我收到编译错误redeclaration of 'key' with no linkage
所以我只是使用key
而没有再次进行类型转换。该计划似乎运行正常。
这可以接受吗?这样安全吗?
答案 0 :(得分:4)
这不合法,因此不安全。但它很容易修复。只需在switch语句中使用块来限制声明的范围:
switch (command):
case '+': {
int key;
scanf("%i", &key);
//do stuff
break;
}
case '-': {
int key;
scanf("%i", &key);
//do stuff
break;
}