首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libusb-1.0 libusb_get_device_list()失败

libusb-1.0 libusb_get_device_list()失败
EN

Stack Overflow用户
提问于 2015-02-04 19:10:16
回答 1查看 1.2K关注 0票数 2

也用-Wall、-std=c99和c11进行测试(当然不起作用)

代码语言:javascript
复制
$ gcc -o usb -L/usr/local/lib -lusb-1.0 -I/usr/local/include usbtest.c

输出:

代码语言:javascript
复制
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.

代码语言:javascript
复制
#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指针的指针并将其传递给它,但结果是相同的。

EN

回答 1

Stack Overflow用户

发布于 2015-02-05 12:15:01

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

这是因为你写了&&brd_ftdi&&是GCC的扩展,意思是标签的地址。这不是标准C。

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

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

代码语言:javascript
复制
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 *)写入您给定的地址。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28329443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档