我定义了这个结构:
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
这样做的正确方法是什么?
答案 0 :(得分:2)
您无法分配数组。你也在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);
答案 1 :(得分:0)
尝试:
typedef struct
{
CAMERA * device_list
} main_struct;
main_struct MAIN_STRUCT;
{
MAIN_STRUCT myMainStruct;
myMainStruct.device_list = device_list;
}
通过你正在做的事情你创建一个指向主结构的指针数组; HTH
马里奥