ToBeAITer 2022-06-06 20:27 采纳率: 0%
浏览 93
已结题

结构体中不定长数组元素初始化

有如下代码,请帮忙看下这里柔性数组的定义是否可行,有无风险。目的是为了实现结构体中不定长数组元素的初始化。感谢指导!

typedef struct
{
  uint8_t fileNo;
  uint8_t attr;
  uint8_t status;
} S_FILE;

typedef struct
{
  uint32_t length
  S_FILE fileInfo[];  // 这里使用柔性数组结合length初始化成变长数组是否可行?
} S_FILE_DATA;

S_FILE_DATA gFileData[MAX_PARTITION_CNT]; // 全局变量

void FileInfoInit(S_FILE *file, uint32_t lenght)
{
  for (int i = 0; i < length; i++)
  {
    file[i].fileNo = i;
    file[i].attr = i * 2;
    file[i].status = 0;
  }
}

int main(void)
{
  for (int partitionId = 0; partitionId  < MAX_PARTITION_CNT; partitionId  ++)
  {
    FileInfoInit(&gFileData[partitionId].fileInfo[0], 32 + partitionId  );
  }
  return 0;
}

  • 写回答

1条回答 默认 最新

  • ToBeAITer 2022-06-07 09:04
    关注

    之所以这样做是不想动态malloc,我自己本地尝试编译运行是没问题的,不过这么用不管是数组还是指针未初始化感觉好像都有风险

    评论

报告相同问题?

问题事件

  • 系统已结题 6月14日
  • 创建了问题 6月6日

悬赏问题

  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 Revit2020下载问题
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数