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