也用-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 04: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_device
s的指针)的指针。
您对libusb_open
的当前注释调用会出现问题,因为您正在传递指向指向libusb_device_handle
的指针的未初始化指针。此函数也会将其结果( libusb_device_handle *
)写入您给定的地址。
https://stackoverflow.com/questions/28329443
复制相似问题