实际使用C中的额外括号

我知道{}用于分隔函数,类和条件分支等实体,但是它们在这里有什么其他用途?

 #import  int main(void) { {{{ printf("main\n"); }}} return 0; } 

编辑:

我发现它主要用于信息隐藏以及嵌套函数 。 从下面的答案看,它们似乎可以在调试期间用作标记,并在发布中删除,但这不应该得到认可。

将代码括在大括号{ }会创建一个Scope
创建本地范围可能有多种原因,例如:

  • 允许您在封闭范围中重用变量名称。
  • 在函数中间定义变量。
    在c89中不允许在除示波器开头之外的任何地方创建变量,但是从c99开始它是允许的。

在线示例代码示例

 #include int main() { int i = 10; { int i = 5; printf("i is [%d]\n",i); } printf("i is [%d]\n",i); return 0; } 

在您的示例代码中,
额外的{}不用于任何目的,它们只是冗余代码。

正如@Martin在评论中所建议的那样,由于{{{ }}}代码与{{{}}}类似,因此可以将其用作标记/模式以便于搜索。

但是,就个人而言,我更倾向于使用关键字在代码中添加适当的注释,该关键字将显示在搜索中,而不是添加此类冗余代码。

这种语法(连续三个大括号)并不意味着标准C中的任何特殊内容。此类代码的作者可能会使用它来指示内部代码,就像它只是用于调试一样。

你可以引入一个新的范围,然后允许你引入新的变量….这在C89中很有用。 虽然不太正常,但偶尔有用。

 { int x =2 ; printf("%d", x); { int y = 7; printf("%d", y); } } 

额外的括号为Als提供了范围。 这可以有效地用于智能指针。 例如,考虑C ++中的以下代码(MSVC编译器)

 int i = 0; i++; //More code follows ... { CComBSTR bstr("Hello"); //use this bstr in some code ..... } 

结束括号后, bstr将无法使用。 此外,由于它已超出范围,因此析构函数也将自动调用。