何时在c/c++中强制要求在}之后使用分号

When is a semicolon after } mandated in c/c++?

本文关键字:之后 c++ 何时      更新时间:2023-10-16
if(...) {
  ...
}

在上面的情况下,;似乎是可选的,在c/c++中,}后面的分号什么时候是必要的?

int a[2] = {1,2}, j = 5;

当用{}完成数组或结构的初始化时,所有后续变量都在,之后声明。

编辑:当您更改问题时;;classenum初始化语法声明之后是必需的。

class A {};  // same for `struct
enum E {};   // enum class (c++0x)
int a[] = {1,2};  // array or object initialization

根据@rubenfb:的评论

do {} while(condition);

分号本身就是一个空语句,您可以在语句合法的任何地方添加额外的分号。因此,在if后面的大括号后面加一个分号是合法的,尽管它与if根本没有关系。我能想到的唯一一个分号是的地方是C++中类声明之后的括号。

如果这是声明的末尾,则右大括号后面的分号是管理性的。如果它是块语句的末尾,则不需要分号,如果使用分号,则会生成一个额外的空语句。如果它是if-elsedo-while(或C++中的try-catch(的中间,则这可能是非法的


分号需要在大括号后面的许多位置而不是(在除块语句之外的任何语句的末尾,在任何声明的末尾,即使没有},在for子句中,等等(,但通常大括号不涉及其中的任何一个。