有人可以告诉我以下代码使用的构造的名称吗?

时间:2018-12-14 12:43:38

标签: c++ c

让我们考虑以下代码:

#include <stdio.h>
int main() {
    int err = 
    (
        { 
            int _err = 0;
            for (int i = 0; i < 100; ++i) {
                _err += i;
            }
            _err;
        }
    );
    printf("%d", err);
}

我在gcc测试套件中发现了它(或者,更复杂的化身),并且对构造感到困惑:

int outer_var = ( { int local_var = 0; /* do some work on local_var */ local_var; } );

如果删除括号(或;之后的)),它将无法编译,但是带有括号的代码将编译为c或c ++。我所做的事情或多或少地清楚了(尽管我不得不承认,这是我第一次在独立的语句(_err;中看到一个实际上具有含义的变量),但我只是避而远之直到现在还没有看到过这种结构,所以我想问一下在任何C或C ++标准中是否都有它的正式名称。

0 个答案:

没有答案