为什么 zlibs z_stream::next_in 不是常量?

Why isn't zlibs z_stream::next_in const?

我目前正在将来自另一个堆栈溢出问题的代码 uncompresses data from a QByteArray 集成到应用程序中。

由于我们启用了所有编译器错误,我们必须 reinterpret_cast 和 const_cast QByteArray::data():

z_stream strm;
strm.next_in = reinterpret_cast<Bytef *>(const_cast<char *>(data.data()));

为什么这个输入参数是非常量的?在我看来,这表明数据以某种方式被修改,这绝对不是我想要的,也不是我认为实际发生的事情。

默认情况下 z_stream 接口函数不是 const,大概是出于遗留原因。

您可以构建带有 const 支持的 zlib 但是 运行 configure 带有 --const.