我知道{}
用于分隔实体,例如函数、类和条件分支,但是它们在这里还有什么其他用途?
#import <stdio.h>
int main(void) {
{{{
printf("main\n");
}}}
return 0;
}
编辑:
我发现它可能主要用于信息隐藏以及嵌套函数。从下面的答案来看,它们似乎可以在调试期间用作标记并在发布中被删除,但这不应该得到认可。
我知道{}
用于分隔实体,例如函数、类和条件分支,但是它们在这里还有什么其他用途?
#import <stdio.h>
int main(void) {
{{{
printf("main\n");
}}}
return 0;
}
编辑:
我发现它可能主要用于信息隐藏以及嵌套函数。从下面的答案来看,它们似乎可以在调试期间用作标记并在发布中被删除,但这不应该得到认可。
将代码括在大括号中{
}
会创建一个Scope。
创建本地范围可能有多种原因,例如:
#include<stdio.h>
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
将不可用。此外,由于它已经超出范围,因此析构函数也将被自动调用。