gpt4 book ai didi

c - GNU89,混合声明和循环初始声明

转载 作者:太空狗 更新时间:2023-10-29 16:07:28 24 4
gpt4 key购买 nike

GCC 和 ICC 的默认 C 方言是 GNU89。 GNU89 允许混合声明,例如

int i;
i = 0;
int j;

我从 SO 上的许多其他帖子中推断(错误地),例如 C: for loop int initial declaration , 这意味着我可以做

for(int i=0; i<n; i++)

使用 GNU89 但是当我这样做时我得到了

error: 'for' loop initial declarations are only allowed in C99 mode

显然,混合声明和循环初始声明不是一回事(即一个并不暗示另一个)。

如果我只能有一个,我宁愿有循环初始声明。当然,我可以只使用 GNU99,但这不是重点。默认是 GNU89,它已经打破了一些 C89 规则(它还允许 BCPL/C++ 风格的注释)。允许混合声明但不允许循环初始声明是否有一些根本原因?

最佳答案

混合声明和语句在其他语言(例如 Algol 68)中早于 C89,并且是一些 C89 编译器(非 MSCV)中的常见扩展。

另一方面,for 语句中的计数器变量声明通过 C++98 出现在 C 中,据我所知,没有 C89 编译器发现它足够有用,可以将其添加为 C89 扩展。

关于c - GNU89,混合声明和循环初始声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23229872/

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