首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libusb半工作,但libusb_device_descriptor未申报?

libusb半工作,但libusb_device_descriptor未申报?
EN

Stack Overflow用户
提问于 2013-07-03 21:30:26
回答 2查看 1.9K关注 0票数 4

我正在使用libusb尝试一个C样例,直到我尝试执行以下操作时,一切都进行得很好:

代码语言:javascript
复制
libusb_device_descriptor descriptor;
int result = libusb_get_device_descriptor(usb_device, &descriptor);

编译器告诉我,在同一个libusb.h头中定义的某些元素(与我正在使用的其他libusb结构一样)是没有声明的。这是什么?

下面是完整的代码:

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <libusb.h>

void printdev(libusb_device *usb_device);

/**
 * main
 */
int main(void) {
    puts("USB Test v0.0.1");

    libusb_device **usb_devices;
    libusb_context *usb_context = NULL;
    int result;
    result = libusb_init(&usb_context);
    ssize_t device_count;

    if (result < 0) {
        puts("USB initialization error!");
        return EXIT_FAILURE;
    }

    libusb_set_debug(usb_context, 1);
    device_count = libusb_get_device_list(usb_context, &usb_devices);

    if (device_count < 0) {
        puts("Unable to get USB device list!");
        return EXIT_FAILURE;
    }

    char message[24];
    sprintf(message, "%d USB Devices found", (int)device_count);
    puts(message);

    ssize_t i;
    for (i = 0; i < device_count; i++) {

    }

    libusb_free_device_list(usb_devices, 1);
    libusb_exit(usb_context);

    return EXIT_SUCCESS;
}

/**
 *
 */
void printdev(libusb_device *usb_device)
{
    libusb_device_descriptor descriptor;
    int result = libusb_get_device_descriptor(usb_device, &descriptor);

    if (result < 0) {
        puts("Failed to get device descriptor");
        return;
    }
}

如果我将printdev函数去掉/注释掉,代码编译和main()将完美地运行。但是为什么在main中使用结构,比如libusb_device和libusb_context定义了,而libusb_device_descriptor却没有呢?

下面是我的编译器输出:

代码语言:javascript
复制
23:18:07 **** Incremental Build of configuration debug for project usb_test ****
make all 
Building file: ../src/usb_test.c
Invoking: GCC C Compiler
gcc -I/usr/local/Cellar/libusb/1.0.9/include/libusb-1.0 -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/usb_test.d" -MT"src/usb_test.d" -o "src/usb_test.o" "../src/usb_test.c"
../src/usb_test.c: In function 'printdev':
../src/usb_test.c:52: error: 'libusb_device_descriptor' undeclared (first use in this function)
../src/usb_test.c:52: error: (Each undeclared identifier is reported only once
../src/usb_test.c:52: error: for each function it appears in.)
../src/usb_test.c:52: error: expected ';' before 'descriptor'
../src/usb_test.c:53: error: 'descriptor' undeclared (first use in this function)
make: *** [src/usb_test.o] Error 1

23:18:07 Build Finished (took 73ms)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-03 21:46:56

我也研究过Libusb.h,而且libusb_config_descriptor没有定义类型,所以您必须在libusb_config_descriptor之前输入struct

票数 8
EN

Stack Overflow用户

发布于 2013-07-03 21:35:57

在libusb.h中没有libusb_device_descriptor类型。

然而,有一个struct libusb_device_descriptor

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

https://stackoverflow.com/questions/17458444

复制
相关文章

相似问题

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