问题
I know {}
are used to separate entities such as functions, classes and conditional branching, but what other use would they have here?
#import <stdio.h>
int main(void) {
{{{
printf("main\n");
}}}
return 0;
}
EDIT:
I found that it may be useful primarily for information hiding, along with nested functions. From the answers below it would seem they can be used as a marker during debugging and be removed in the release, but that this should not be endorsed.
回答1:
Enclosing a code in braces {
}
creates an Scope.
Creating an local scope can have number of reasons like:
- Allows you to reuse a variable name in enclosing scope.
- Define variables in middle of function.
Creating variables anywhere except at the start of an scope was not allowed in c89, but it is allowed since c99.
Online Example Code Sample:
#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;
}
In your example code,
the extra {
& }
do not serve any purpose, they are just redundant code.
As @Martin suggests in comments, since enclosing code in {{{
& }}}
is just similar to {
& }
, it might be used as an tag/pattern for easy search.
However, Personally, I would prefer adding appropriate comment to the code with an keyword which would show up in search rather than add such redundant code.
回答2:
That syntax (three curly braces in a row) doesn't mean anything special in standard C. The author of such code might use it to indicate something about the code inside, like that it's just there for debugging.
回答3:
you can introduce a new scope, which then allows you to introduce new variables.... which can be useful in C89. Not too normal though, but occasionally useful.
{
int x =2 ;
printf("%d", x);
{
int y = 7;
printf("%d", y);
}
}
回答4:
Extra braces gives you scope as Als mentioned. This can be used in case of Smart Pointers effectively. e.g., consider the following code in C++ (MSVC compiler)
int i = 0;
i++;
//More code follows
...
{
CComBSTR bstr("Hello");
//use this bstr in some code
.....
}
After the end braces, bstr
won't be available. Furthermore, since it has gone out of scope, therefore, the destructor will also get called automatically.
来源:https://stackoverflow.com/questions/9028726/practical-use-of-extra-braces-in-c