猿问

数组零长度

数组零长度

我正在重构一些旧的代码,并发现很少的结构包含零长度数组(如下)。当然,由pragma压制的警告,但我没有通过包含这种结构的“新”结构创建(错误2233)。数组'byData'用作指针,但为什么不使用指针呢?或长度为1的数组?当然,没有添加任何评论让我喜欢这个过程...任何使用这种东西的原因?重构那些的任何建议?

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

NB它是C ++,Windows XP,VS 2003


猛跑小猪
浏览 554回答 3
3回答

慕尼黑8549860

是的,这是一个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的对象,它有一个指定长度的数组。
随时随地看视频慕课网APP
我要回答