【问题标题】:C99 variables declaration position where it is writtenC99 变量声明的位置
【发布时间】:2012-12-13 19:44:13
【问题描述】:

我知道 C99 允许声明与代码混合,不仅在开头,而且我试图找到它在 ISO/IEC 9899:1999 中的编写位置 - 你能指出我的部分吗?应该搜索吗?

提前致谢。

【问题讨论】:

    标签: c c99


    【解决方案1】:

    在(非规范性)转发中,第 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
    

    【讨论】:

      【解决方案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
      

      【讨论】:

        【解决方案3】:

        C 1999 6.8.2 两个说复合语句是“{”、一个可选的块项目列表和一个“}”,并且块项目列表是块 = 项目或另一个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
        

        【讨论】:

          猜你喜欢
          • 2010-09-22
          • 1970-01-01
          • 2013-06-05
          • 2018-06-02
          • 1970-01-01
          • 2022-09-27
          • 2020-02-03
          • 1970-01-01
          相关资源
          最近更新 更多