gpt4 book ai didi

c - libusb-1.0 libusb_get_device_list() 失败

转载 作者:太空宇宙 更新时间:2023-11-03 23:25:26 24 4
gpt4 key购买 nike

还使用 -Wall 和 -std=c99 和 c11 进行了测试(当然不工作)

$ gcc -o usb -L/usr/local/lib -lusb-1.0 -I/usr/local/include usbtest.c

输出:

usbtest.c: In function ‘main’:
usbtest.c:14:1: error: label ‘brd_ftdi’ used but not defined
libusb_get_device_list(context, &&brd_ftdi);

usbtest.c:

#include <stdio.h>
#include <libusb-1.0/libusb.h>
int main() {
libusb_device* brd_ftdi;
libusb_device_handle** brd_ftdi_handle;
libusb_context* context;

//libusb_device *** list = &&brd_ftdi;

//libusb_init (libusb_context **);
libusb_init (&context);

libusb_get_device_list(context, &&brd_ftdi);
//libusb_open(brd_ftdi, brd_ftdi_handle);

//libusb_exit(struct libusb_context *);
libusb_exit(context);

return 0;
}

未定义?我知道,但是 libusb_get_device_list() 应该这样做(把列表放在那里),所以 WTF?我还测试了声明一个指向 brd_ftdi 的指针并将其传递给它,但结果相同。

最佳答案

如果您仔细阅读错误消息,它会说 label brd_ftdi 未定义,而不是变量。

那是因为你写了&&brd_ftdi&&是一个GCC扩展,意思是the address of a label .它不是标准的 C。

一个变量的地址就是一个&brd_ftdi变量的地址是&brd_ftdi

libusb_get_device_list函数采用 libusb_device*** :它将写入指向 libusb_device 的指针列表地址的地址。你可以像这样使用它:

libusb_device **list_of_devices;
libusb_get_device_list(context, &list_of_devices);

list_of_devices 是指向列表第一个指针的指针(指向 libusb_device 的指针)。

您当前对 libusb_open 的注释调用会遇到问题,因为您将未初始化的指针传递给指向 libusb_device_handle 的指针。此函数也将其结果(libusb_device_handle *)写入您提供的地址。

关于c - libusb-1.0 libusb_get_device_list() 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28329443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com