首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是新的Bytef[int]在C++?

什么是新的Bytef[int]在C++?
EN

Stack Overflow用户
提问于 2011-10-09 20:08:47
回答 9查看 7.5K关注 0票数 1

下面有一个代码片段,我不太清楚最后一行是做什么的。更具体地说,什么是Bytef[]?

代码语言:javascript
运行
复制
FILE* read_file_handle = fopen(read_filename, "rb");
fseek(read_file_handle, 0, SEEK_END);
size_t no_bytes_to_read = ftell(read_file_handle);
Bytef* read_buffer = new Bytef[no_bytes_to_read];

Bytef[]是做什么的?而且,如果有人知道,在将其移植到PHP时,我将如何实现呢?我认为它可能是一个数组,但是从来没有定义过这样的变量,使用新的关键字就没有意义了。

有人能帮忙吗?

霍什

编辑:好的,由于用户默认,它似乎是在zlib中定义的。它在这个文件在第124行中被定义为这个文件在第124行,根据这一点,有人知道Bytef的类型是什么吗?字节被定义为char (typedef unsigned char Byte;),#define FAR被定义为:#define FAR,有帮助吗?

EN

Stack Overflow用户

发布于 2018-09-09 06:46:55

Bytef在zlib源代码中定义。在输入以下消息时,我下载了最新版本的zlib : zlib-1.2.11。在这个目录中(解压缩后),

代码语言:javascript
运行
复制
find . -type f | xargs grep Bytef 
many lines ignored
......
./zconf.h:   typedef Byte  FAR Bytef;
...... 
more lines ignored

注意,字节不是C或C++中的类型。所以我得多读几行代码。FAR是在zlib中定义的宏。较短的grep搜索模式将导致更多的行。我增加了一些过滤器。

代码语言:javascript
运行
复制
find . -type f | xargs grep Byte | sed '/Bytef/d' | sed '/test/d' | grep typedef
./ChangeLog:- Correct Macintosh avoidance of typedef Byte in zconf.h
//**This is what you want: 
./zconf.h:typedef unsigned char  Byte;  /* 8 bits */

./zconf.h:   typedef Byte const *voidpc;
./zconf.h:   typedef Byte FAR   *voidpf;
./zconf.h:   typedef Byte       *voidp;
./zconf.h.cmakein:typedef unsigned char  Byte;  /* 8 bits */
./zconf.h.cmakein:   typedef Byte const *voidpc;
./zconf.h.cmakein:   typedef Byte FAR   *voidpf;
./zconf.h.cmakein:   typedef Byte       *voidp;
./zconf.h.in:typedef unsigned char  Byte;  /* 8 bits */
./zconf.h.in:   typedef Byte const *voidpc;
./zconf.h.in:   typedef Byte FAR   *voidpf;
./zconf.h.in:   typedef Byte       *voidp;

你可以看到,C使用了大量的类型防御。有时候是心灵旋转。我将向您展示如何查询源项目,这样您就可以为类似类型的问题找到答案。

FAR是zcon.h中定义的另一个宏,但它并不是那么容易理解。很多的发展和发展,这基本上是什么都没有。

当您包含zlib.h时,新的Bytef10与新的未标记的char10是相同的。你甚至可以加远。在zlib作者使用的示例代码中:

代码语言:javascript
运行
复制
unsigned char in[CHUNK];

而不是拜特夫inCHUNK。这里的块是另一个宏。在C中使用了大量的宏。

票数 1
EN
查看全部 9 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7706241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档