@backingInt — enum·packed 타입을 뒷받침하는 정수로

@backingInt — enum·packed 타입을 뒷받침하는 정수로

enum이나 packed struct, packed union 값을 가장 아래에서 받쳐 주는 정수(backing integer)로 바꿔 주는 내장 함수예요. 값 자체가 아니라, 그 값을 컴퓨터가 실제로 저장하는 정수 형태를 꺼내 준다고 이해하면 돼요.

출처: Zig Documentation

본문

시그니처부터 볼게요.

@backingInt(enum_or_bitpack: T) BackingInt(T)

이 함수는 enum(enum), packed struct(packed struct), 또는 packed union(packed union) 값을 그대로 받아서, 해당 값이 쓰는 **뒷받침 정수(backing integer)**로 변환해 줘요.

enum을 생각하면 이해가 빨라져요. enum은 프로그래밍할 때는 이름으로 다루지만, 메모리에서는 결국 정수 하나로 저장되죠. @backingInt는 그렇게 저장된 정수를 직접 꺼내 주는 거예요. 다시 말해 기본 정수 타입이나 비트 폭을 굳이 외우지 않고도, 값의 실제 정수 표현을 얻고 싶을 때 쓰면 돼요.

tagged union(tagged unions)에서도 동작해요. 이 경우에는 활성화된(active) enum tag 값에 대해 적용돼요. 즉 union이 현재 어떤 태그로 되어 있는지를 정수로 가져온다고 보면 돼요.

쓰임새를 정리하면, enum/packed 타입의 메모리 표현을 다뤄야 할 때 — 예를 들어 값의 원시 정수를 계산하거나 저장된 비트를 직접 확인할 때 — 유용해요.

더 알아보기

  • @fromBackingInt@backingInt의 반대 방향. 정수에서 다시 enum/packed 타입 값을 만들어 줘요.
  • @bitCast — 타입을 바꿔서 같은 비트 패턴을 재해석할 때 써요.