к чему относится структурированный блок? - PullRequest
0 голосов
/ 25 января 2020

Я уже несколько раз видел, что в объяснении синтаксиса использовалась фраза структурированный блок . Например:

#pragma omp single
  structured-block

(Это из OpenMP, но это не имеет значения.)

Будут ли следующие две строки также считаться структурированным блоком?

do_something1;
do_something2;

или только первое утверждение само по себе?

Итак, кратко говоря: что они имеют в виду, когда говорят структурный блок?

Ответы [ 2 ]

1 голос
/ 25 января 2020

На основании документации здесь :

«Структурированный блок» - это отдельный оператор или составной оператор с одной записью вверху и одним выходом на bottom

Поиск определения составного оператора здесь :

Составной оператор или блок - это заключенная в скобки последовательность операторов и объявления.

Учитывая это определение, do_something1; будет единственной частью структурированного блока, поскольку после этого начинается новый "одиночный" оператор. С другой стороны, если бы вы сделали

#pragma omp <directive>
{
do_something1;
do_something2;
}

, то в структурированном блоке он был бы как «составной» оператор.

Наконец, обратите внимание на определение, содержащее single entry at the top and a single exit at the bottom. Это просто означает, что у нас не должно быть промежуточной точки прерывания выхода / потока управления, такой как оператор goto, return или throw error между ними.

1 голос
/ 25 января 2020

структурированный блок - это либо отдельный оператор, например

printf("Hello\n");

, либо последовательность операторов, заключенная в фигурные скобки:

{
    printf("Hello ");
    printf("World\n");
}

Кроме того, OpenMP требует «единственную запись, «один выход», это означает, что вы не можете иметь goto или подобное ветвление в блоке и что у вас не может быть ветви, выходящей из блока, например, goto или в C ++ исключение. Вместо этого код должен достигать закрывающей фигурной скобки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...