【发布时间】:2026-01-01 11:10:01
【问题描述】:
有时我们会遇到“struct xxxx;”在C文件中,以libusb.so的头文件libusb.h为例,如下图(struct libusb_device):
结构 libusb_context;
结构 libusb_device;
结构 libusb_device_handle;
这是什么意思?仅仅是声明吗?但我找不到struct libusb_device 的定义位置。
整个 libusb.h 文件在这里:libusb.h。
【问题讨论】:
-
这三个声明都说“存在具有给定名称的结构类型”。结构的内容未定义,但您现在可以拥有和使用指向这些类型的指针。例如,它们可以用于函数原型。它们通常被称为“不透明”类型。类型的全部细节可能只在一个源文件中定义,或者它们可能在一个单独的私有头文件中,不分发给库的用户。
-
我投票决定将此问题作为离题结束,因为这不是编程问题。 OP 就是不懂 C。需要一本书
-
@PeterJ_01:Stack 中保留了许多问题,Overflow 询问了 C 的某些方面,这意味着提问者不了解或不了解 C。它们之所以有主题是因为每个问题都是“一个实用的、可回答的问题这是软件开发所独有的。”虽然您现在可能会发现一些知识是初级的,但曾经有一段时间您并不了解它,并且可以将其记录下来以供未来的 Stack Overflow 用户使用。
-
@JonathanLeffler 现在我知道这三个声明是“不透明”类型,用户不知道它是如何实现的,也不需要知道。达到封装的目的。感谢您的所有回答,我知道我需要阅读更多书籍,谢谢!