zlib 添加的各种类型的目的是什么,我该如何使用它们?

What is the purpose of the various types added by zlib and how can I use them?

我目前正在尝试,以学习 zlib 的基本用法为目标,创建一个用 C++ 压缩和解压缩文件的小实用程序。我正在使用 zlib 提供的 compress2uncompress 函数来促进这一点。然而,这两个函数都采用了 zlib 特有的各种类型(BytefuLongf 等),它们与 C++ 类型(或者更确切地说,指向每个函数的指针)之间没有任何自动转换这些类型)。这使得与 zlib 接口的简单代码变得更加复杂,除非我根据 zlib 的类型编写我的整个应用程序。

我的问题分为 3 个部分:

我浏览了 zlib manual 并完整阅读了可能看起来相关的部分,并使用了 ctrl+f 辅助搜索,但无济于事。我的搜索引擎也不知道答案。

  • 为了便于携带,您的文件长度应使用 off_t,而不是 unsigned long。在某些系统上,它们的大小不同,off_t 更长。
  • 是的,您可以在 Bytefchar 之间进行转换。 (Bytef 实际上是 unsigned char,但不需要转换。) uLong 只是 unsigned long。 (参见 zconf.h。)
  • zlib 的文档是 zlib.h,其中这些类型作为函数的参数被调用。您可以使用 zlibCompileFlags() 来确定每种类型中的位数。 (参见 zlib.h。)