@alignOf

@alignOf

타입의 C ABI 정렬(alignment) 값을 알려주는 내장 함수예요. 포인터가 가리키는 타입의 정렬을 꼭 명시해야 할 때, 이 함수로 값을 구해 직접 쓸 수 있답니다.

출처: Zig Documentation

본문

시그니처는 이렇게 생겼어요.

@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 문서를 함께 보면 좋아요.

더 알아보기

  • @sizeOf: 타입의 바이트 크기를 구해요.
  • Alignment: 정렬 개념과 align 키워드에 대한 자세한 설명.