52 lines
765 B
Plaintext
52 lines
765 B
Plaintext
import "libc";
|
|
|
|
A :: struct {
|
|
a: short;
|
|
b: char;
|
|
c: int;
|
|
d: char;
|
|
e: llong;
|
|
f: uchar;
|
|
} @packed
|
|
|
|
B :: struct {
|
|
a: A;
|
|
b: A;
|
|
}
|
|
|
|
C :: struct {
|
|
a: llong;
|
|
b: A;
|
|
c: A;
|
|
}
|
|
|
|
D :: struct {
|
|
a: A;
|
|
b: int;
|
|
c: char;
|
|
} @packed
|
|
|
|
#static_assert(sizeof(:A) == 17);
|
|
#static_assert(alignof(:A) == 1);
|
|
|
|
#static_assert(sizeof(:B) == 34);
|
|
#static_assert(alignof(:B) == 1);
|
|
|
|
#static_assert(sizeof(:C) == 48);
|
|
#static_assert(alignof(:C) == 8);
|
|
|
|
#static_assert(sizeof(:D) == 22);
|
|
#static_assert(alignof(:D) == 1);
|
|
|
|
main :: proc(): int {
|
|
assert(sizeof(:A) == 17);
|
|
assert(alignof(:A) == 1);
|
|
|
|
assert(sizeof(:B) == 34);
|
|
assert(alignof(:B) == 1);
|
|
|
|
assert(sizeof(:C) == 48);
|
|
assert(alignof(:C) == 8);
|
|
|
|
return 0;
|
|
} |