`@alignCast` — 포인터의 정렬을 바꾸기
@alignCast — 포인터의 정렬을 바꾸기
포인터의 정렬(alignment)을 바꾸고 싶을 때 쓰는 내장 함수예요. 어떤 정렬로 바꿀지는 결과 타입에서 추론되고, 생성된 코드에 안전 검사도 함께 붙어요.
본문
@alignCast는 포인터의 정렬을 바꿔요. 선언은 이렇게 생겼어요.
@alignCast(ptr: anytype) anytype
ptr로 받는 대상은 *T, ?*T, []T 셋 중 하나예요. 즉 단일 포인터든, nullable 포인터든, 슬라이스든 모두 받을 수 있죠.
그럼 어떤 정렬로 바꿔야 하는지는 어디서 정해질까요? 바로 결과 타입에서 추론돼요. 별도로 "이만큼 정렬해줘"라고 숫자를 주는 게 아니라, 우리가 이 값을 받아 쓰는 자리의 타입이 정렬 크기를 정해 주는 거예요.
한 가지 짚고 넘어갈 점이 있어요. 생성된 코드에는 포인터 정렬 안전 검사(pointer alignment safety check) 가 추가돼요. 이 검사는 포인터가 약속한 대로 정렬돼 있는지 확인해 주는 역할이에요. 정렬이 어긋난 포인터를 만든다고 해서 조용히 넘어가지 않도록, 컴파일러가 미리 안전장치를 걸어두는 거죠. 이 검사에 대한 자세한 이야기는 Zig 매뉴얼의 Incorrect Pointer Alignment 섹션에서 이어서 볼 수 있어요.
더 알아보기 (Learn more)
- Zig Documentation — @alignCast
- 포인터의 정렬 개념 자체가 궁금하다면 Zig Documentation — Alignment을 함께 보면 좋아요.