zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit ca3aa02206edef4481c6f24506bfbd3b4f18fe58 (tree)
parent a5bbc66f10339cb2e17ef996ef097b696980595a
Author: Devin Bayer <dev@doubly.so>
Date:   Tue, 13 Apr 2021 14:53:44 +0200

Update doc for struct field alignment.

Diffstat:
Mdoc/langref.html.in | 19+++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/doc/langref.html.in b/doc/langref.html.in @@ -2763,9 +2763,24 @@ test "overaligned pointer to packed struct" { cause the test suite to fail, notifying the bug fixer to update these docs. </p> <p> - It's also - <a href="https://github.com/ziglang/zig/issues/1512">planned to be able to set alignment of struct fields</a>. + It's also possible to set alignment of struct fields: </p> + {#code_begin|test#} +const std = @import("std"); +const expectEqual = std.testing.expectEqual; + +test "aligned struct fields" { + const S = struct { + a: u32 align(2), + b: u32 align(64), + }; + var foo = S{ .a = 1, .b = 2 }; + + expectEqual(64, @alignOf(S)); + expectEqual(*align(2) u32, @TypeOf(&foo.a)); + expectEqual(*align(64) u32, @TypeOf(&foo.b)); +} + {#code_end#} <p> Using packed structs with {#link|volatile#} is problematic, and may be a compile error in the future. For details on this subscribe to