gpt4 book ai didi

c - 无法根据 C 中的 char 数组长度分配数组

转载 作者:行者123 更新时间:2023-12-05 01:03:22 25 4
gpt4 key购买 nike

在使用 C 中的一个函数时遇到了一些问题,该函数基本上是借助名称参数的长度 + 扩展长度来创建和分配一个临时数组。

int my_func(char *name)
{
char *extension = ".db";
size_t tmp_size = strlen(name) + strlen(extension);
char tmp_name[tmp_size];

return 0;
}

这似乎不适用于 MSVC,但在 Clang 或 GCC 上运行良好。知道为什么会出现这些错误:

error C2057: expected constant expression
error C2466: cannot allocate an array of constant size 0
error C2133: 'tmp_name': unknown size

当我在 macOS 上的 Clang 中使用调试器时,我看到它分配并工作正常。为什么不使用 MSVC?

最佳答案

tmp_name是变长数组,MSVC不支持这种数组。

如果您希望它在 MSVC 下工作,您需要动态分配空间。

此外,您的数组是一个短元素,因为它没有空间容纳组合字符串的终止空字节。

关于c - 无法根据 C 中的 char 数组长度分配数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74417872/

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