#include <stdint.h>
#include <stdio.h>
typedef union {
uint64_t u[2];
struct {
uint64_t a:30;
uint64_t b:30;
uint64_t c:30;
uint64_t d:30;
uint64_t e:8;
}x;
} mystruct;
int main()
{
printf("Size %d\n", sizeof(mystruct));
}
Ich versuche, es auf 64-Bit-Maschine zu kompilieren. Die erwartete Ausgabe war 16, aber ich bekomme 24. Ich weiß, einige Ausrichtung passiert hier, aber ich bin mir nicht sicher, warum, wie die Struktur x genau 16 Bytes ist. Kann jemand das erklären. Danksizeof zeigt nicht die erwartete Ausgabe
Sie Bitfelder verwenden: K & R Seite 150: *“ Fast alles über Bitfelder ist implementierungsabhängig "*. Persönlich hätte ich das "Fast" weggelassen. – cdarke
@cdark sie sagen * fast * weil der Rest ist nicht spezifiziert;) – ouah