Practical use of extra braces in C

前端 未结 4 626
时光取名叫无心
时光取名叫无心 2021-01-07 11:20

I know {} are used to separate entities such as functions, classes and conditional branching, but what other use would they have here?

#import &         


        
相关标签:
4条回答
  • 2021-01-07 11:49

    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.

    0 讨论(0)
  • 2021-01-07 11:50

    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.

    0 讨论(0)
  • 2021-01-07 11:54

    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);
      }
    }
    
    0 讨论(0)
  • 2021-01-07 11:56

    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.

    0 讨论(0)
提交回复
热议问题