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 タイプのままである必要があるため、特定の問題やオーバーヘッドは発生しません。