双指针双结构数组编译错误



我已经定义了这个结构:

typedef struct
{
    uint16_t short_addr;
    uint64_t ieee_addr;
    uint8_t  LQI;
    uint16_t PANId;
} CAMERA;

我为它声明了一个数组,像这样:

static CAMERA device_list [ MAX_NUMBER_OF_DEVICES ];

所有这些都在一个特定的模块中定义和声明。现在,我想在一个新的结构体中从主模块中创建一个指向那个数组的指针。但是我得到编译错误,我不太确定如何做到这一点。

typedef struct
{
 CAMERA * device_list[ MAX_NUMBER_OF_DEVICES ];
} main_struct;
main_struct MAIN_STRUCT;

但是问题是我不能把指针的值赋给它

MAIN_STRUCT.device_list = device_list;

导致以下编译错误:

Error[Pe137]: expression must be a modifiable lvalue 

正确的方法是什么?

不能给数组赋值。你在main_struct中也声明错了,把它声明为指针就足够了(现在你把它声明为指针数组)

typedef struct
{
 CAMERA * device_list;
} main_struct;

它应该可以工作。

如果你真的希望它是一个数组,那么就声明它为一个数组:

typedef struct
{
 CAMERA device_list[ MAX_NUMBER_OF_DEVICES ];
} main_struct;

从另一个数组复制到新数组:

memcpy(MAIN_STRUCT.device_list, device_list, sizeof(CAMERA) * MAX_NUMBER_OF_DEVICES);

尝试:

typedef struct
{
 CAMERA * device_list
} main_struct;
main_struct MAIN_STRUCT;

{
   MAIN_STRUCT myMainStruct;
   myMainStruct.device_list = device_list;
}

创建了一个指向main结构体的指针数组;hth

马里奥

相关内容

最新更新