簡體   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