Practical use of extra braces in C

瘦欲@ 提交于 2019-12-01 11:56:17

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.

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.

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);
  }
}

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.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!