| ... | @@ -3320,6 +3320,16 @@ fn doTheTest() !void { | ... | @@ -3320,6 +3320,16 @@ fn doTheTest() !void { |
| 3320 | try expect(ordered[1] == 0x12); | 3320 | try expect(ordered[1] == 0x12); |
| 3321 | }, | 3321 | }, |
| 3322 | } | 3322 | } |
| | 3323 | } |
| | 3324 | {#code_end#} |
| | 3325 | <p> |
| | 3326 | The backing integer is inferred from the fields' total bit width. |
| | 3327 | Optionally, it can be explicitly provided and enforced at compile time: |
| | 3328 | </p> |
| | 3329 | {#code_begin|test_err|test_missized_packed_struct|backing integer type 'u32' has bit size 32 but the struct fields have a total bit size of 24#} |
| | 3330 | test "missized packed struct" { |
| | 3331 | const S = packed struct(u32) { a: u16, b: u8 }; |
| | 3332 | _ = S{ .a = 4, .b = 2 }; |
| 3323 | } | 3333 | } |
| 3324 | {#code_end#} | 3334 | {#code_end#} |
| 3325 | <p> | 3335 | <p> |