While using gcc
, the code:
register a = 3;
static b = 3;
it is allowed while using the -std=c89 -pedantic-errors
flags, although there is a warning.
However it receive an error with the -std=c99 -pedantic-errors
flags.
I wonder which section of the C89 standards allows the "implicit int" rule?
The section that allowed the implicit int rule in C89 would be section 3.5.2
Type specifiers which says (emphasis mine):
int , signed , signed int , or no type specifiers
Keith Thompson in the comments points out that in C90 the section is 6.5.2
and says, The only difference is some introductory material required by ISO, resulting in a renumbering of the sections.
In C99 where this changed, the section is 6.7.2
Type specifiers and it says:
int, signed, or signed int
This is also covered in document N661: Disallow implicit "int" in declarations which says:
Change in 6.5.2 Type specifiers; add new sentence at beginning of first paragraph of Constraints: At least one type specifier shall be given in the declaration specifiers in a declaration.
Change in 6.5.2 Type specifiers, Constraints, from: -- int, signed, signed int, or no type specifiers to: -- int, signed, or signed int
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With