C++ c++;:switch语句在右大括号前缺少分号
为了未来读者的利益和我自己以后的理智,我想明确指出,C++ c++;:switch语句在右大括号前缺少分号,c++,visual-studio,compiler-errors,switch-statement,C++,Visual Studio,Compiler Errors,Switch Statement,为了未来读者的利益和我自己以后的理智,我想明确指出,switch语句没有default案例(因为所有案例都被涵盖)或顺序如果elseif else,最后一个else不应做任何事情,不得省略,并包括对此的注释(参见示例) 但是,每当我在switch语句中包含default大小写并将其保留为空时,我必须在default大小写中加上分号,否则会出现编译器错误:“Line[Line of closing brace of switch语句]`missing';'before'}'在默认值之后。
switch
语句没有default
案例(因为所有案例都被涵盖)或顺序如果elseif else
,最后一个else不应做任何事情,不得省略,并包括对此的注释(参见示例)
但是,每当我在switch
语句中包含default
大小写并将其保留为空时,我必须在default
大小写中加上分号,否则会出现编译器错误:“Line[Line of closing brace of switch语句]`missing';'before'}'<为什么强>
示例:生成编译器错误
switch(direction) {
case MOVE_UP:
//...
break;
case MOVE_RIGHT:
//...
break;
case MOVE_DOWN:
//...
break;
case MOVE_LEFT:
//...
break;
default:
/* DO NOTHING */
}
switch(direction) {
case MOVE_UP:
//...
break;
case MOVE_RIGHT:
//...
break;
case MOVE_DOWN:
//...
break;
case MOVE_LEFT:
//...
break;
default:
/* DO NOTHING */;
}
示例:不生成编译器错误
switch(direction) {
case MOVE_UP:
//...
break;
case MOVE_RIGHT:
//...
break;
case MOVE_DOWN:
//...
break;
case MOVE_LEFT:
//...
break;
default:
/* DO NOTHING */
}
switch(direction) {
case MOVE_UP:
//...
break;
case MOVE_RIGHT:
//...
break;
case MOVE_DOWN:
//...
break;
case MOVE_LEFT:
//...
break;
default:
/* DO NOTHING */;
}
因为您的
默认情况下需要一条语句。分号是一个空语句。因为您的默认情况下需要一个语句。分号是一个空语句。
labeled-statement:
identifier : statement
case constant-expression : statement
default : statement
标记语句:
标识符:语句
case常量表达式:语句
默认值:语句
C++11与此相同,只是可以在标签前面有属性
一个零长度的令牌序列不是C++中的语句,因此<代码>默认:本身不是标记语句。
也就是说,我不知道为什么标记语句的语法不允许default:statementopt
。如果是这样的话,那么如果你写default:case1:break代码>,是否<代码>案例1:断裂
是属于default:
的语句,或者default:
是否没有自己的语句,但后面紧跟着一条语句。毫无疑问,它的意思是什么,但可能有人认为它会搞乱人们的解析器。C++03中的6.1/1给出了标记语句的语法:
labeled-statement:
identifier : statement
case constant-expression : statement
default : statement
标记语句:
标识符:语句
case常量表达式:语句
默认值:语句
C++11与此相同,只是可以在标签前面有属性
一个零长度的令牌序列不是C++中的语句,因此<代码>默认:本身不是标记语句。
也就是说,我不知道为什么标记语句的语法不允许default:statementopt
。如果是这样的话,那么如果你写default:case1:break代码>,是否<代码>案例1:断裂
是属于default:
的语句,或者default:
是否没有自己的语句,但后面紧跟着一条语句。毫无疑问,这意味着什么,但可能是认为它会把人们的解析器弄乱。 FYI,默认情况下是C++中的可选……如果你想保持一致,就放一个<代码>中断;代码>默认情况下,FC++默认情况下是C++中的可选……如果你想保持一致,请放一个<代码>中断;代码>在默认值之后。