@fieldParentPtr — 필드 포인터로 부모 구조체·유니온 포인터 얻기
@fieldParentPtr — 필드 포인터로 부모 구조체·유니온 포인터 얻기
구조체나 유니온의 필드를 가리키는 포인터가 있을 때, 그 필드를 담고 있는 부모 구조체·유니온 자체를 가리키는 포인터로 되돌리고 싶은 상황이 있어요. @fieldParentPtr가 바로 그 역할을 하는 내장 함수예요. 포인터로 들어온 필드의 뒤쪽, 즉 부모를 다시 찾아주는 셈이죠.
본문
@fieldParentPtr(comptime field_name: []const u8, field_ptr: *T) anytype
구조체 또는 유니온 필드를 가리키는 포인터를 받아, 그 필드를 포함하는 구조체나 유니온을 가리키는 포인터를 반환합니다.
반환 타입(문제가 되는 부모 구조체·유니온을 가리키는 포인터)은 추론된 결과 타입(inferred result type)입니다. 즉 이 함수를 부르는 쪽의 기대 타입이 곧 반환 타입으로 이어져요.
만약 field_ptr이 결과 타입의 인스턴스에 들어 있는 field_name 필드를 가리키고 있지 않은데, 그 결과 타입의 레이아웃이 제대로 정의되어 있지 않다면(ill-defined layout), 검사되지 않는 Illegal Behavior를 일으킵니다.