我已经定义了这个结构:
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
马里奥