C11中{ struct-declaration-list }(C23为{ member-declaration-list })是否属于块?
C语言中“block(块)”定义的争议与疑问
- 在C11、C23标准中,并未给出术语“block(块)”的准确定义。仅C11明确复合语句是块,复合语句的语法定义为:
{ block-item-listopt } - 对于
{ struct-declaration-list }这种大括号包裹结构体声明列表的结构,现有C标准里找不到明确依据来判定它是否属于块——尽管它的语法形式和复合语句类似,但标准未做延伸说明。 - GNU C语言手册对“块”的描述存在表述矛盾,无法作为判定该结构属性的可靠依据。
- 维基百科主张C语言中所有由大括号包裹的结构都属于块,按此观点
{ struct-declaration-list }属于块,但这并非官方标准的定义。
内容的提问来源于stack exchange,提问作者pmor
相关产品推荐
相关产品推荐

