c - 初始化结构中的指针数组时是否需要花括号?

标签 c pointers data-structures

我使用 Dev C++ 和 SPC5 Studio 编译了一个 C 代码,它的结构包含指向另一个结构的指针数组。

   typedef struct
    {
      uint16 Identifier_u16;
      void* const DataFncType;
    }ClassCfg_ts;

    typedef struct
    {
      uint32 Val_u32;
      ClassCfg_ts*  ClassRef_pu[2];
    }atrb_paramCfg_ts;

初始化如下

ClassCfg_ts ClassCfg1_s[] = {
{0,writeFucntion},//read write fucntion
{1,writeFucntion},//read write fucntion
{2,writeFucntion},//read write fucntion
};

ClassCfg_ts ClassCfg2_s[] = {
{0,writeFucntion},//read write fucntion
{1,writeFucntion},//read write fucntion
{2,writeFucntion},//read write fucntion
};

atrb_paramCfg_ts atrb_paramCfg_s[] =
{
{0,ClassCfg1_s},
{0,ClassCfg2_s},
};

定义 writeFunciton 的地方。当使用 Dev C++ 时,此初始化工作完美,而在 SPC5 studio 中给出包含花括号的警告,并且仅当初始化更改为时它才会消失

atrb_paramCfg_ts atrb_paramCfg_s[] =
{
{0,{ClassCfg1_s}},
{0,{ClassCfg2_s}},
};

其中哪一个是正确的初始化?

最佳答案

ClassRef_p 是指向 ClassCfg_ts 的指针数组。您需要支撑初始化数组。 {ClassCfg2_s} 是在上面的代码片段中初始化它的正确方法。

关于c - 初始化结构中的指针数组时是否需要花括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51836786/

相关文章:

java - C中的Python样式整数除法和模数

c++ - 从指针删除到指针 vector

c - 等效的紧凑型 "Switch Case"语句

javascript - 关于如何使用数组来存储其他变量的名称有什么想法吗?

c - 这个指针越界了吗?

c - 如何制作一个整数数组,其中每个数组位置都是我的号码的一个数字?

c - 如何用指针在c中添加相邻的数组项?

c - 动态二维数组 - 分配不起作用(段错误)

c - 搜索二叉树并打印有值(value)的子项

data-structures - 为什么 HashMap 比特里映射更好?