3ワードの 'データ'を保持できるc構造体を作成したいとします。ダブルまたはロングまたは他のデータを格納するCデータ型
struct _Obj {
??? a;
??? b;
??? c;
}
typedef struct _Obj Obj;
しかし、さまざまなタイプのデータをa、b、cに保存し、必要に応じてキャストできたいと考えています。
たとえば、 'a'は長い場合もありますが、それ以外の場合は倍精度で、さらに別の場合はポインタです。実行時私はそれらに格納されているものを知っているので、必要に応じて時刻を(即座に)データ型にキャストできるようにしたいと考えています。
Obj obj;
long a = 893;
obj.a = a;
double b = 3.14159;
obj.b = b;
long newA = (long)obj.a;
double newB = (double)obj.b;
基本的には、いくつかのビットを保存しておき、特定の方法で後で解釈できるようにしたいだけです。これはどうすればいいですか?
構造体内で、サポートしたいすべてのデータ型を持つ共用体を使用できます。 –
私はちょうど適切なサイズの 'char'配列を作るか、' union'と言うでしょう。 – HolyBlackCat
@HolyBlackCat私は 'char'配列を使っていません。これは事実上型の安全性を提供せず、慎重な使用なしに厳密なエイリアシングのルールに違反する可能性があります。 – Downvoter