繁体   English   中英

C ++中的void算术

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM