Я знаю, что есть много вопросов по этой проблеме, но конкретно у меня возникли проблемы с реализацией библиотеки libusb в Ubuntu. Вот мой код:
struct usb_bus *busses;
struct usb_bus *bus;
struct usb_device *digiSpark = NULL;
struct usb_device *device;
if(debug) printf("Detecting USB devices...\n");
// Initialize the USB library
usb_init();
// Enumerate the USB device tree
usb_find_busses();
usb_find_devices();
// Iterate through attached busses and devices
busses = usb_get_busses();
for (bus = busses; bus; bus = bus->next)
{
for (device = bus->devices; device; device = device->next)
{
// Check to see if each USB device matches the DigiSpark Vendor and Product IDs
if((device->descriptor.idVendor == 0x16c0) && (device->descriptor.idProduct == 0x05df))
{
if(debug) printf("Detected DigiSpark... \n");
digiSpark = device;
}
}
}
Это было почти дословно взято из примера libusb:
http://libusb.sourceforge.net/doc/examples-code.html
Но он генерирует массу ошибок «разыменование указателя на неполный тип».
В частности, я получаю этот указатель разыменования на неполную ошибку типа в следующих строках:
busses = usb_get_busses();
for (bus = busses; bus; bus->next)
for (device = bus->devices; device; device->next)
И дважды в следующей строке:
if((device->descriptor.idVendor == 0x16c0) && (device->descriptor.idProduct == 0x05df))
Как я уже сказал, это странно, потому что я (по большей части) не придумываю это, это взято из установленного примера с веб-сайта lib.
Любые предложения были бы замечательными. Спасибо!
device->next
на самом деле ничего не делает. Я думаю, вы имеете в видуdevice = device->next
? - person Some programmer dude   schedule 25.06.2013