C89标准中的哪个部分允许“隐式整数”规则?

使用gcc ,代码:

 register a = 3; static b = 3; 

虽然有警告,但在使用-std=c89 -pedantic-errors标志时允许使用它。

但是,它会收到-std=c99 -pedantic-errors标志-std=c99 -pedantic-errors

我想知道C89标准的哪一部分允许“隐含整数”规则?

在C89中允许隐式int规则的部分将是3.5.2 类型说明符 ,它表示( 强调我的 ):

int,signed,signed int 或no type specifiers

Keith Thompson在评论中指出,在C90中该部分是6.5.2并且说, 唯一的区别是ISO要求的一些介绍性材料,导致部分重新编号

在C99中 ,这改变了,该部分是6.7.2 类型说明符 ,它说:

int,signed或signed int

这也包含在文档N661中:在声明中禁止隐式“int”,其中说:

6.5.2类型说明符的变化; 在约束的第一段开头添加新句子:在声明中的声明说明符中至少应给出一个类型说明符。

  Change in 6.5.2 Type specifiers, Constraints, from: -- int, signed, signed int, or no type specifiers to: -- int, signed, or signed int