块和复合语句是同一个概念吗?

Are a block and a compound statement the same concept?

在 C11 标准中

6.8 Statements and blocks

A block allows a set of declarations and statements to be grouped into one syntactic unit.

6.8.2 Compound statement Syntax

compound-statement:
{ block-item-listopt }

block-item-list:
block-item
block-item-list  block-item

block-item:
declaration
statement
Semantics

A compound statement is a block.

6.9.1 Function definitions

Syntax

function-definition:
declaration-specifiers declarator  declaration-listopt compound-statement

所以复合语句是一个块。

块是复合语句吗?

在函数定义中,“compound-statement”部分与块的含义相同吗?

A compound-statement 是一个块,但它不是唯一的块。迭代语句也是一个块,例如 (6.8.5/5),即使循环体由一个简单的语句组成。

与迭代语句不同,函数定义的语法需要大括号。 compound-statement 是用大括号括起来的句法范畴。

块是语义范畴,用于指定名称的范围和自动对象的生命周期。