C 타입 기본형

C 타입 기본형 (C Type Primitives)

Zig에서 C 코드와 연동할 때, C의 타입을 그대로 쓸 수 있으면 얼마나 편할까요? 그래서 Zig는 이 문제를 위한 타입을 따로 준비해 두었어요.

출처: Zig Documentation

본문

아래 타입들은 C ABI와의 호환성이 보장되어 있어요. 그러니까 C 쪽과 메모리 레이아웃이 정확히 맞아떨어지기 때문에, Zig 코드 안에서도 다른 타입처럼 그냥 자유롭게 쓸 수 있답니다.

c_char       // C의 char
c_short      // C의 short
c_ushort     // C의 unsigned short
c_int        // C의 int
c_uint       // C의 unsigned int
c_long       // C의 long
c_ulong      // C의 unsigned long
c_longlong   // C의 long long
c_ulonglong  // C의 unsigned long long
c_longdouble // C의 long double

여기서 한 가지 짚고 넘어갈 게 있어요. C의 void 타입은 위 목록에 없죠? C의 void와 연동해야 할 땐 anyopaque를 쓰면 돼요. void처럼 "형태가 정해지지 않은 타입"을 Zig에서는 anyopaque로 표현하거든요.

더 알아보기

  • 원래 Zig 타입 체계에 대한 설명은 Primitive Types 문서를 참고하면 좋아요.