Rumah > Soal Jawab > teks badan
RT, tugasan terakhir struktur ini akan menimpa tugasan sebelumnya, jadi saya ingin tahu tentang senario apakah perkara seperti ini biasanya digunakan?
某草草2017-06-12 09:26:44
Tujuan asalnya adalah untuk menjimatkan ingatan Jika anda fikirkan, bahasa C hanya mula digunakan secara besar-besaran pada tahun 1980-an, dan ingatan sangat berharga pada masa itu.
ringa_lee2017-06-12 09:26:44
Boleh menyediakan antara muka akses yang berbeza kepada sekeping data yang sama. . .
Sebagai contoh, semasa anda melakukan kerja terbenam, anda boleh menulis seperti ini:
// 没有字节对齐,或者字节对齐为1,int 占4字节
typedef union {
unsigined int num;
struct {
unsigned char byte0;
unsigned char byte1;
unsigned char byte2;
unsigned char byte3;
} bytes;
} Demo;
Walau bagaimanapun, ia tidak begitu ringkas untuk menulis dengan cara ini, dan kecekapan kod ini dalam PC adalah sama seperti mengambil terus setiap bait melalui peralihan bit. Beri contoh sahaja, jangan terlalu sibuk dengannya.
给我你的怀抱2017-06-12 09:26:44
Ia sering digunakan dalam pembangunan terbenam Biar saya berikan contoh di sini, yang serupa dengan @zonxin di atas
typedef struct __regular_descriptor_4_high {
union {
U32 value;
struct {
U32 raid_id0 : 4;
U32 raid_cmd0 : 4;
U32 raid_id1 : 4;
U32 raid_cmd1 : 4;
U32 raid_id2 : 4;
U32 raid_cmd2 : 4;
U32 raid_id3 : 4;
U32 raid_cmd3 : 4;
} reg_des_bit;
} u;
} reg_des_4_high;
Untuk membaca keseluruhan daftar, anda boleh membaca nilai Untuk menulis fail-bit yang berbeza, gunakan reg_des_bit untuk menulis.