【发布时间】:2014-10-13 10:16:53
【问题描述】:
在 C99 中,对于迭代语句和选择语句,有新的块作用域,我知道 if、while 等本身是块作为它们的子语句,也没有 { }。
C11 规范:
6.8.4:
选择语句是一个块,其范围是 其封闭块的范围。每个关联的子语句也是一个 范围是选择范围的严格子集的块 声明。
6.8.5
迭代语句是一个块,其范围是一个严格的子集 其封闭块的范围。循环体也是一个块,其 范围是迭代语句范围的严格子集。
但如果我这样做:
if( (int a = 10) == 10 ) // error: expected expression before '==' token
int j = 10; // error: expected expression before 'int'
GCC 给我错误。
如何验证 C99 新规则?
谁能给我一些工作示例?
【问题讨论】:
-
具体是哪条规则?
-
@2501,我用规范规则编辑了问题。
标签: c