我有一个结构:
struct {
Header header;
uint32_t var1;
uint32_t var2;
char var3;
char var4[4];
};
你明白了。问题是我正在通过网络接收字节数组,我首先必须先解析 Header。所以我首先先解析头部,然后我必须解析其余的结构。
我试过了,
void* V = data; // which is sizeof(uint32_t) * 2 + sizeof(char) * 5
然后尝试像 (V)、V+sizeof(uint32_t) ... 等那样解析它
但它给出了编译器错误。我如何通过网络解析该结构的其余部分?
最佳答案
C++ 中的基本数据单位是 char
。它是可以寻址的最小类型,根据定义它的大小为 1。此外,语言规则特别允许将所有数据视为字符序列。所有 I/O 都以字符序列(或流)的形式发生。
因此,您的原始数据缓冲区应该是一个char
数组。
(另一方面,void *
在 C++ 中有非常具体和有限的用途;它的主要目的是指定一个对象在内存中的地址。例如, operator new()
的结果是一个 void *
。)
关于c++ - C++ 中的 void 算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10612118/