Packed struct too big / uninitialized

Yep, this confuses every C programmer.
C’s packed is Zig’s extern with individual align for a field/fields.

Zig’s packed is more like bit-fields, for example:

const std = @import("std");
const PackedStruct = packed struct {
    f1: u3,
    f2: u3,
    f3: u1,
};
pub fn main() void {
    std.debug.print("bitSizeOf(PackedStruct) = {}\n", .{@bitSizeOf(PackedStruct)});
    std.debug.print("sizeOf(PackedStruct) = {}\n", .{@sizeOf(PackedStruct)});
    std.debug.print("alignOf(PackedStruct) = {}\n", .{@alignOf(PackedStruct)});
}

This will print

bitSizeOf(PackedStruct) = 7
sizeOf(PackedStruct) = 1
alignOf(PackedStruct) = 1

Also there was a topic about re-interpreting byte array as a struct and about byte-order conversion.