也用-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);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()应该这么做(把清单放在那里),所以呢?我还测试了声明指向brd_ftdi指针的指针并将其传递给它,但结果是相同的。
发布于 2015-02-05 12:15:01
如果您仔细阅读错误消息,它会说标签brd_ftdi没有定义,而不是变量。
这是因为你写了&&brd_ftdi,&&是GCC的扩展,意思是标签的地址。这不是标准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_devices的指针)的指针。
您对libusb_open的当前注释调用会出现问题,因为您正在传递指向指向libusb_device_handle的指针的未初始化指针。此函数也会将其结果( libusb_device_handle *)写入您给定的地址。
https://stackoverflow.com/questions/28329443
复制相似问题