gpt4 book ai didi

c - C89 标准中的哪一部分允许 "implicit int"规则?

转载 作者:太空狗 更新时间:2023-10-29 16:40:56 27 4
gpt4 key购买 nike

使用gcc时,代码:

register a = 3;
static b = 3;

在使用 -std=c89 -pedantic-errors 标志时是允许的,尽管有警告。

但是它会收到带有 -std=c99 -pedantic-errors 标志的错误。

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

最佳答案

C89 中允许隐式 int 规则的部分是 3.5.2 Type specifiers 部分(强调我的):

int , signed , signed int , or no type specifiers

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

C99在这发生变化的地方,该部分是 6.7.2 Type specifiers 并且它说:

int, signed, or signed int

这也包含在文档 N661: Disallow implicit "int" in declarations 中其中说:

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

关于c - C89 标准中的哪一部分允许 "implicit int"规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26488502/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com