为什么VLC隐藏结构定义

时间:2018-09-29 03:47:50

标签: c vlc

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

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

我在徘徊为什么隐藏结构定义。据我所知,这是一个开源项目,为什么当您选择对整个项目开源时,为什么选择隐藏部分代码?

1 个答案:

答案 0 :(得分:3)

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

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

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