为什么vlc隐藏结构定义

Why vlc hide structure definition

我在 vlc 代码库中看到了下面的代码。

/** This structure is opaque. It represents a libvlc instance */
typedef struct libvlc_instance_t libvlc_instance_t;

我在想为什么结构定义被隐藏了。据我所知,这是一个开源项目,为什么选择开源整个项目而选择隐藏部分代码?

它没有隐藏,因为他们希望它是秘密的。它是隐藏的,因为它是一个实现细节。

开源和其他项目使用不透明结构和其他机制来实现封装和实现隐藏,以确保软件版本之间一定程度的 API 兼容性。例如,在有插件架构的情况下,主要软件的作者希望即使插件更改了主要软件,插件也能够在不修改的情况下继续工作。因此,他们以允许将来进行此类更改的方式隐藏了实现细节。

如果没有这些技术,插件和主机软件之间的集成将很脆弱,并且可能导致版本之间不兼容。