gpt4 book ai didi

无法创建大小为 ("expected constant expression” 的数组)

转载 作者:太空宇宙 更新时间:2023-11-04 00:58:36 25 4
gpt4 key购买 nike

此问题与 Windows 10 上 Visual Studio(Community 2015)中的 C 相关。

我似乎无法创建具有常量大小的数组 - 下面的代码会导致阻止构建的“预期常量表达式”错误。这是一个大小为 size_t 的 wchar_t 数组,但我看到 char 和其他数组类型以及 int 常量的行为相同。

我知道数组的大小需要在编译时知道,但肯定是这里的情况。给了什么?

#include <stdio.h>

void main()
{
size_t const newsize = 100;

wchar_t fileData[newsize];
}

最佳答案

I know the size of arrays needs to be known at compile time, but surely that's the case here.

其实不是这样的。在 C 中,const 限定不会产生“常量表达式”。所以 newsize 不是 constant expression (与 C++ 不同)。

您的代码在 C99 和 C11 中有效,如果 variable length array (VLA) 受您的实现支持(VLA 在 C11 中是可选的)。但是,Visual Studio 似乎不支持 VLA,并且需要像 C89 中那样的数组大小的“常量表达式”。

因此您可能必须使用动态内存分配(malloc 和 friend ),或者简单地将 100 指定为大小,或者使用宏来定义大小等等。

关于无法创建大小为 ("expected constant expression” 的数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49348236/

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