c++ - 在结构中取消引用可变大小数组

标签 c++ struct

结构似乎是解析二进制数据 block (即文件或网络数据包)的有用方法。在 blob 中有可变大小的数组之前,这很好而且花花公子。例如:

struct nodeheader{
        int flags;
        int data_size;
        char data[];
};

这让我可以找到最后一个数据字符:

nodeheader b;
cout << b.data[b.data_size-1];

问题是,我想要多个可变长度数组:

struct nodeheader{
    int friend_size;
    int data_size;
    char data[];
    char friend[];
};

我没有手动分配这些结构。我有一个这样的文件:

char file_data[1024];
nodeheader* node = &(file_data[10]);

因为我正在尝试解析一个二进制文件(更具体地说是一个类文件)。我已经用 Java 编写了一个实现(这是我的类作业),不,我正在用 C++ 编写个人版本,并且希望不用编写 100 行代码就可以成功。有什么想法吗?

谢谢, 斯特凡

最佳答案

你不能有多个可变大小的数组。编译器在编译时应该如何知道 friend[] 的位置呢? friend 的位置取决于 data[] 的大小,而 data 的大小在编译时是未知的。

关于c++ - 在结构中取消引用可变大小数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/178838/

相关文章:

c - 如何从非文本文件中读取、修改结构?

c - 为什么局部变量结构在离开其范围时不重置?

c - 从传递给函数的结构中写入成员会产生意外结果

c# - 在 C# 中调用 Cygwin GCC DLL 在 malloc 上挂起

c++ - 在只接触深度缓冲区的 openGL 中进行绘制调用

c++ - 多线程解决查询

c++ - 如何在 C++ 和 QT 的另一个窗口中显示主窗口的结果图像?

c - 如何在结构体中包含宏

添加到列表末尾的同一个链表函数可以用于添加到多个不同的链表吗?

c++ - 使用 C++ 将四个字节转换为整数