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