C 바인딩 변수
C 바인딩 변수 (C Bindings Variables)
C 라이브러리가 노출하는 변수를 Crystal에서도 그대로 다룰 수 있어요. C 라이브러리가 제공하는 변수는 lib 선언 안에서, 전역 변수처럼 생긴 선언으로 정의합니다.
lib C
$errno : Int32
$buffer : UInt8[256]
end
그러면 값을 읽고 쓸 수 있어요.
C.errno # => some value
C.errno = 0
C.errno # => 0
C.buffer # => StaticArray(UInt8, 256)
C.buffer = StaticArray(UInt8, 256).new(0_u8)
변수는 어노테이션으로 스레드 로컬(thread local)로 표시할 수도 있어요.
lib C
@[ThreadLocal]
$errno : Int32
end
외부 변수 타입에 쓰이는 표기법은 타입 문법을 참고하세요.
더 알아보기 (Learn more)
- Crystal 공식 문서 - C bindings Variables
- type_grammar — 외부 변수 타입 표기법