Практическое использование дополнительных скоб в С - PullRequest
1 голос
/ 27 января 2012

Я знаю, {} используются для разделения сущностей, таких как функции, классы и условное ветвление, но какое еще использование они будут здесь использоватьчто это может быть полезно в первую очередь для сокрытия информации вместе с вложенными функциями .Из приведенных ниже ответов может показаться, что они могут использоваться в качестве маркера во время отладки и удаляться в выпуске, но это не следует подтверждать.

Ответы [ 4 ]

5 голосов
/ 27 января 2012

Заключение кода в фигурные скобки { } создает Область действия .
Создание локальной области может иметь ряд причин, таких как:

  • Позволяет повторно использовать имя переменной во вложенной области видимости.
  • Определение переменных в середине функции.
    Создание переменных в любом месте, кроме как в начале области, не было разрешено в c89, но это разрешено начиная с c99.

Пример кода в режиме онлайн :

#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 предлагает в комментариях, поскольку код в {{{ & }}} похож на { & }, его можно использовать как тег / шаблон для удобного поиска.

Однако лично я предпочел бы добавить соответствующий код к коду с ключевым словом, которое будет отображаться в поиске, а не добавлять такой избыточный код.

2 голосов
/ 27 января 2012

вы можете ввести новую область видимости, которая затем позволяет вводить новые переменные .... которые могут быть полезны в C89. Не слишком нормально, но иногда полезно.

{
  int x =2 ;
  printf("%d", x);
  {
    int y = 7;
    printf("%d", y);
  }
}
2 голосов
/ 27 января 2012

Этот синтаксис (три фигурные скобки в строке) не означает ничего особенного в стандарте C. Автор такого кода может использовать его, чтобы указать что-то о коде внутри, например, это просто для отладки.

0 голосов
/ 27 января 2012

Дополнительные скобки дают вам объем, как упоминалось выше. Это может быть эффективно использовано в случае Smart Pointers. например, рассмотрим следующий код на C ++ (компилятор MSVC)

int i = 0;
i++;
//More code follows 
...

{
    CComBSTR bstr("Hello");
    //use this bstr in some code
    .....
}

После конечных скобок bstr не будет доступно. Кроме того, поскольку он вышел из области видимости, деструктор также будет вызываться автоматически.

...