你能用C做裸块吗?

时间:2015-01-25 14:07:59

标签: c

我知道在C#和JavaScript中,以下内容完全有效:

{
  var foo;
}

在C中有一个裸块有效吗?

即。这是有效的C?

{
  int foo;
}

2 个答案:

答案 0 :(得分:7)

  

这在C中也有效吗?

是的,它是,它被称为复合语句

来自C11标准:

6.8.2 Compound statement
Syntax
1 compound-statement:
    { block-item-listopt }
block-item-list:
    block-item
    block-item-list block-item
block-item:
    declaration
    statement

复合语句本身就是C中的语句

例如,此块是有效块:

{
    {
        {
            printf("Hello world");
        }
    }
}

即便是这个也是有效的:

{{{}}}

{}是一个空的复合语句。

答案 1 :(得分:5)

是的,它完全没问题!

举个例子:

#include <stdio.h>

int main() {

{   
    int i = 5;  //If you declare i outside you can use both print statements
    printf("%d", i);
}


//printf("%d", i);  Note that i is out of scope here

    return 0;

}