比如有这样一个结构:
struct FooStructure
{
WORD Field1;
WORD Field2;
WORD Field3;
}
其中所有字段的大小为 2 个字节。如果在程序执行期间发现Field2没有足够的空间来存储字段中的值并且您不需要 2 个字节,而是 4 个字节(DWORD),该怎么办。同时,在DWORD这种情况下立即使用它并留有余量不是一种选择,因为。然后将数据划分为结构的字段,然后按顺序进入内存。
更具体地说,任务是解析 .NET 托管模块的元数据表。由于这些表使用了很多其他元数据流中不同类型对象的索引,而这些索引可以是2字节或4字节,因此使用结构进行元数据处理是有问题的。
在这里,我建议 2 个选项。
1:模板 - 在这里我认为一切都清楚需要什么类型 - 推这个
2:指针 - 无论你想要什么 - 在那里为其分配内存并推)))
3:所有字段合并
C++17:
使所有字段 std::variant
所有字段都使 std::any