2012-12-13 33 views
3

我知道C99允许声明与代码混合,不仅在开始时,但我试图找到它在ISO/IEC 9899:1999中的写法 - 你能指出我到我应该搜索的部分?C99变量声明位置写在哪里

在此先感谢。

回答

5

该变更在(非规范性)转发,第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 
+0

谢谢基思:) – Zopper

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 
+0

谢谢帕斯卡:) – Zopper

2

Ç1999 6.8.2 2表示的化合物语句是“{”,可选块项目列表和一个“}”,并且块项目列表是块= -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 
+0

谢谢埃里克:) – Zopper