我有一组structs
来自我正在转换为 C++ 的一些 C 代码,根据我的理解,它们应该是 POD 类型。这里有些例子:
struct Data {
u16 type : 12;
u8 variant : 3;
bool isTop : 1;
};
struct DData {
u16 type : 12;
u8 variant : 3;
u8 layer : 1;
};
struct TData {
struct Data data1, data2;
struct DData ddata[MAX];
u16 x;
u8 y;
u8 s : 4;
u8 l : 4;
u8 wl : 3;
u8 wr : 3;
u8 lt : 2;
};
到目前为止,我有许多方法将这些结构的指针作为参数,我打算将它们直接移动到结构声明中以节省大量输入,例如。
struct Data {
u16 type : 12;
u8 variant : 3;
bool isTop : 1;
inline bool hasFlag(u64 flag) { return Types::specs[type].flags & flag; }
};
我想知道我可以以这种方式添加的每种方法是否对此都是安全的struct
,这些结构通过网络序列化并转换为二进制文件,因此我需要确保这不会破坏任何东西。如果我是对的,它们应该保持 POD 类型,因此不会出现特别的问题或开销。