我正在重构一些旧代码,并发现一些包含零长度数组的结构(如下)。当然,警告被 pragma 抑制,但我无法通过包含此类结构的“新”结构创建(错误 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 对象,其中包含指定长度的数组。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)