我知道C99允许声明与代码混合,而不仅仅是在开头,但是我试图在ISO / IEC 9899:1999中找到它的位置 - 你能指点我的部分(s我应该搜索?
提前致谢。
答案 0 :(得分:5)
在(非规范性的)Forward,第xii页中提到了这种变化,称为“混合声明和代码”。 (恕我直言,声明是“代码”;它应该说“混合声明和声明”。)
它在6.8.2中的复合语句的语法中定义:
compound-statement:
{ block-item-list[opt] }
block-item-list:
block-item
block-item-list block-item
block-item:
declaration
statement
C89 / C90标准中的相应语法是:
compound-statement:
{ declaration-list[opt] statement-list[opt] }
declaration-list:
declaration
declaration-list declaration
statement-list:
statement
statement-list statement
答案 1 :(得分:2)
答案在第6.8.2节中:
block-item: declaration
statement
block-item
可以是声明或声明,而不需要按特定顺序排列:
compound-statement:
{ block-item-list_opt }
block-item-list: block-item
block-item-list block-item
答案 2 :(得分:2)
C 1999 6.8.2两个说复合语句是“{”,一个可选的块项列表和一个“}”,并且一个块项列表是块= -item或另一个block-item-list和block-item,block-item是声明或语句。因此,声明可以是复合语句中的任何块项。反过来,6.8表示复合语句可以出现在语句可以出现的任何地方。另外,6.9.1表示函数定义的主体是复合语句。
compound-statement:
{ block-item-list[opt] }
block-item-list:
block-item
block-item-list block-item
block-item:
declaration
statement