@alignOf
@alignOf
타입의 C ABI 정렬(alignment) 값을 알려주는 내장 함수예요. 포인터가 가리키는 타입의 정렬을 꼭 명시해야 할 때, 이 함수로 값을 구해 직접 쓸 수 있답니다.
본문
시그니처는 이렇게 생겼어요.
@alignOf(comptime T: type) comptime_int
이 함수는 현재 타깃에서 이 타입이 C ABI에 맞추기 위해 정렬되어야 하는 바이트 수를 돌려줘요. 포인터의 자식 타입(child type)이 이 정렬 값을 가질 때는, 타입에서 align 부분을 생략해도 돼요.
const assert = @import("std").debug.assert;
comptime {
assert(*u32 == *align(@alignOf(u32)) u32);
}
결과값은 타깃에 따라 달라지는 컴파일 타임 상수(compile time constant)예요. 그리고 항상 @sizeOf(T)보다 작거나 같다는 게 보장돼요.
더 자세한 내용은 Alignment 문서를 함께 보면 좋아요.