gpt4 book ai didi

c - 函数内部的静态数组错误 C

转载 作者:行者123 更新时间:2023-12-04 19:37:43 27 4
gpt4 key购买 nike

static const int LOG_MAX = 31;
static int log_table[LOG_MAX];

此代码位于 C 语言的函数内部。当我尝试编译时出现错误:

"main.c:19:16: error: storage size of 'log_table' isn't constant".

我不明白这一点,因为 LOG_MAXconst

澄清一下,这是 C 代码,我使用的是 GCC。

最佳答案

在旧的 C 和 C++ 标准中,数组的数组边界必须是在编译时评估的常量文字。 const 变量不需要在编译时求值,它可以在运行时作为局部变量创建。此外,正如另一个答案所指出的, const 实际上应该被视为只读的,而不是其他任何东西。

在所有 C 和 C++ 标准中,static 数组必须始终使用常量文字设置其大小。 (或者挑剔一点,这适用于任何具有静态存储持续时间的变量)

然而,在较新的 C 标准(C99、C11)中,如果您省略 static 关键字,您发布的代码就完全没问题。然后它将创建一个可变长度数组 (VLA),这可能是也可能不是您想要的。

我不确定最新的 C++11 标准,但据我所知它不支持 VLA。

关于c - 函数内部的静态数组错误 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21045928/

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