Aki*_*iva 3 c++ qt gcc duplicates switch-statement
非常简单的问题。GCC的Case范围允许以下内容:
switch (c.toLatin1()) {
default: {
foo();
break;
} case 'A' ... 'Z': {
bar();
break;
} case 'a' ... 'z': {
bar();
break;
}
Run Code Online (Sandbox Code Playgroud)
https://gcc.gnu.org/onlinedocs/gcc/Case-Ranges.html
但是,这里的问题bar()
是多余的,并且'A' ... 'z'
最终将包含许多不需要的字符:
从概念上讲,是否可能出现以下情况?
switch (c.toLatin1()) {
default: {
foo();
break;
} case 'A' ... 'Z' || 'a' ... 'z': {
bar();
break;
}
Run Code Online (Sandbox Code Playgroud)
显然,这是伪代码,但是您知道了。如果需要的话,解决方案可以包括文本宏。我更担心意外引入错误,因为我忘记添加新代码:
switch (c.toLatin1()) {
default: {
foo();
break;
} case 'A' ... 'Z': {
foo(); // I add here
bar();
break;
} case 'a' ... 'z': {
bar(); // but forget to add it here too.
break;
}
Run Code Online (Sandbox Code Playgroud)
因为那两种情况,实际上都是一种情况。谢谢。
从概念上讲,是否可能出现以下情况?
switch (c.toLatin1()) {
default: {
foo();
break;
} case 'A' ... 'Z' || 'a' ... 'z': {
bar();
break;
}
Run Code Online (Sandbox Code Playgroud)
当然,只要写:
switch (c.toLatin1()) {
default: {
foo();
break;
} case 'A' ... 'Z':
case 'a' ... 'z': {
bar();
break;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
79 次 |
最近记录: |