gpt4 book ai didi

c++ - 零长度数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:09:12 24 4
gpt4 key购买 nike

我正在重构一些旧代码,发现很少有包含零长度数组的结构(如下)。当然,pragma 抑制了警告,但我未能通过包含此类结构的"new"结构创建(错误 2233)。数组'byData'用作指针,但为什么不使用指针呢?或长度为 1 的数组?当然,没有添加评论让我享受这个过程......使用这种东西有什么原因吗?在重构这些方面有什么建议吗?

struct someData
{
int nData;
BYTE byData[0];
}

注意是 C++、Windows XP、VS 2003

最佳答案

是的,这是一个 C-Hack。
创建任意长度的数组:

struct someData* mallocSomeData(int size)
{
struct someData* result = (struct someData*)malloc(sizeof(struct someData) + size * sizeof(BYTE));
if (result)
{ result->nData = size;
}
return result;
}

现在你有一个 someData 的对象,它有一个指定长度的数组。

关于c++ - 零长度数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24079299/

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