我使用 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/