[英]void arithmetic in C++
我有一个结构:
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
。 它是可以解决的最小类型,根据定义,它的大小为一。 此外,语言规则明确允许将所有数据视为一个字符序列。 所有I / O都按照字符序列(或流)进行。
因此,您的原始数据缓冲区应为char
数组。
(另一方面, void *
在C ++中的用法非常特殊且有限;它的主要目的是在内存中指定对象的地址 。例如, operator new()
的结果是void *
。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.