C 바인딩: type
C 바인딩: type (타입 선언)
lib 안의 type 선언은 C의 typedef 같은 것이지만 더 강력해요. C와 달리 Int32와 MyInt는 서로 교환할 수 없어서, 감싸는 C 라이브러리가 만든 불투명(opaque) 타입을 다룰 때 유용해요.
본문
lib 안에서 type 선언은 C의 typedef 같은 종류를 선언하지만, 더 강력해요:
lib X
type MyInt = Int32
end
C와 달리 Int32와 MyInt는 서로 교환할 수 없어요:
lib X
type MyInt = Int32
fun some_fun(value : MyInt)
end
X.some_fun 1 # Error: argument 'value' of 'X#some_fun' must be X::MyInt, not Int32
따라서 type 선언은 감싸고 있는 C 라이브러리가 만든 불투명 타입에 유용해요. 예를 들어 fopen으로 얻을 수 있는 C의 FILE 타입이 그런 경우예요.
typedef 타입에 쓰이는 표기법은 type grammar를 참고하세요.