问题描述
我正在使用libusb库,该库运行良好,但是现在我试图在自己的结构中使用其结构。我认为问题只是我复制结构的方式,因此可能无需了解libusb的工作原理。 我的结构包含libusb结构:
struct device {
libusb_device *device_handled;
libusb_device_handle *handle;
int port[7];
};
typedef struct device device;
和我的功能:
int myfunction(device *device_element)
{
libusb_device *tempdevice;
libusb_device_handle *temphandle;
device_element = malloc(sizeof(device));
//my code here where I use tempdevice and temphandle
(&device_element)->device_handled = tempdevice;
(&device_element)->handle = temphandle;
}
发出的错误来自最后两行,我真的不明白为什么。
‘device_element’ is a pointer; did you mean to use ‘->’?
(&device_element)->handle = temphandle;
^~
->
解决方法
您不需要在&
之前添加device_element
,因为malloc
返回指向已分配结构的指针。因此,只需使用:
(device_element)->device_handled = tempdevice;
(device_element)->handle = temphandle;
,
您在那里不需要&
运算符。
只需使用
device_element->device_handled = tempdevice;
device_element->handle = temphandle;