Code: Alles auswählen
// gcc main.c -o main
#include <stdio.h>
struct Test1 {
int b1:1;
int b2:1;
int b3:1;
};
struct Test2 {
int a;
int b1:1;
int b2:1;
int b3:1;
};
struct Test3 {
int a;
int b1:1;
int b2:1;
int b3:1;
int b;
};
int main(int argc, char *argv[]) {
struct Test1 test1;
printf("size: %li\n", sizeof(test1)); // -> size: 4
struct Test2 test2;
printf("size: %li\n", sizeof(test2)); // -> size: 8
struct Test3 test3;
printf("size: %li\n", sizeof(test3)); // -> size: 12
}
Nun das komisch, woher kommt die 3 beim ersten Record ?
Code: Alles auswählen
program Project1;
type
TTest1 = record
b1: 0..1;
b2: 0..1;
b3: 0..1;
end;
TTest2 = record
a: integer;
b1: 0..1;
b2: 0..1;
b3: 0..1;
end;
TTest3 = record
a: integer;
b1: 0..1;
b2: 0..1;
b3: 0..1;
b: integer;
end;
var
test1: TTest1;
test2: TTest2;
test3: TTest3;
begin
WriteLn('size: ', SizeOf(test1)); // -> size: 3
WriteLn('size: ', SizeOf(test2)); // -> size: 8
WriteLn('size: ', SizeOf(test3)); // -> size: 12
end.
Bei "bitpacked record": 1, 5, 9.
Dies würde alles stimmen, ausser wie erwähnt, die 3 beim ersten Beispiel.