我定义了这个结构:
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);
关于c - 指向结构数组编译错误的双指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8037536/