@ptrCast — 포인터 타입을 다른 타입으로 바꾸기
@ptrCast — 포인터 타입을 다른 타입으로 바꾸기
Zig에서 포인터를 다른 타입의 포인터로 바꿀 때 쓰는 내장 함수가 바로 @ptrCast예요. 타입 변환의 결과 타입은 문맥에서 추론돼요.
본문
@ptrCast(value: anytype) anytype
@ptrCast는 한 타입의 포인터를 다른 타입의 포인터로 변환해 줘요. 반환 타입은 문맥에서 추론된 결과 타입이에요.
Optional Pointers도 허용돼요. null인 optional 포인터를 non-optional 포인터로 캐스팅하면 안전 검사가 적용된 Illegal Behavior가 발생해요.
@ptrCast는 다음 경우에는 쓸 수 없어요:
const한정자를 제거할 때 — 이때는 @constCast를 써요.volatile한정자를 제거할 때 — 이때는 @volatileCast를 써요.- 포인터의 주소 공간(address space)을 바꿀 때 — 이때는 @addrSpaceCast를 써요.
- 포인터의 정렬(alignment)을 강화할 때 — 이때는 @alignCast를 써요.
- slice가 아닌 포인터를 slice로 캐스팅할 때 — 이때는 slicing 문법
ptr[start..end]를 써요.