yangyanzhao 2020-02-13 11:05 采纳率: 0%
浏览 419

error C2061: 语法错误: 标识符“PUSB_CONFIGURATION_DESCRIPTOR”该标识符已经定义?

DWORD GetInterfaceDescriptor(UINT ConfigIdx, UINT InterfIdx, UINT AltIdx, PUSB_INTERFACE_DESCRIPTOR Desc);

typedef struct _USB_INTERFACE_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bInterfaceNumber;
UCHAR bAlternateSetting;
UCHAR bNumEndpoints;
UCHAR bInterfaceClass;
UCHAR bInterfaceSubClass;
UCHAR bInterfaceProtocol;
UCHAR iInterface;
} USB_INTERFACE_DESCRIPTOR, *PUSB_INTERFACE_DESCRIPTOR;

已经在STDAFX.H中定义,IDE也能链接到这个定义,但是编译的时候就是找不到,不知道什么原因

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-25 21:48
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在C++中,如果你在头文件(如STDAFX.H)中声明了一个结构体或枚举类型,并且在程序的其他地方使用了相同的名称,那么这些引用可能会导致混淆。这种情况下,编译器会报错,指出你尝试访问一个已存在的变量。

    要解决这个问题,你需要确保你的代码不会误用已经存在的命名空间或类名。例如:

    // 在STDAFX.H中声明结构体和枚举类型
    #define USB_INTERFACE_DESCRIPTOR typedef struct {
        // ...
    } USB_INTERFACE_DESCRIPTOR;
    
    // 在其他地方正确地使用这个结构体
    PUSB_INTERFACE_DESCRIPTOR pDesc = NULL;
    

    这样,即使你在同一个头文件中定义了结构体,它也不会被误解为全局变量或者函数参数。同时,你也应该避免在全局作用域内直接访问未初始化的指针或者数组,因为这可能导致未定义行为。

    如果以上建议无法解决问题,请提供更详细的上下文信息,以便我能够帮助您找到问题的原因并提供解决方案。

    评论

报告相同问题?