[英]Converting structs from C to C++ (POD)
我有一组来自我正在转换为 C++ 的 C 代码的structs
,根据我的理解,它们应该是 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 类型,因此不会出现特别的问题或开销。
那应该仍然是一个POD。
您可以通过使用std::is_pod
特性来确定:
std::is_pod<Data>::value;
如果Data
是 POD,则为true
,否则为 false。
无论如何,我不会费心将函数移动到结构体中。 除了不同的调用语法之外,您并没有真正获得任何好处。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.