# system/ctypes

Theme:

- Manual
- Standard library
- Index
- Compiler docs
- Fusion docs
- devel, stable

Search:
Source Edit

Some type definitions for compatibility between different backends and platforms.

# Types

    BiggestFloat = float64

  is an alias for the biggest floating point type the Nim compiler supports. Currently this is `float64`, but it is platform-dependent in general. Source Edit

    BiggestInt = int64

  is an alias for the biggest signed integer type the Nim compiler supports. Currently this is `int64`, but it is platform-dependent in general. Source Edit

    BiggestUInt = uint64

  is an alias for the biggest unsigned integer type the Nim compiler supports. Currently this is `uint64`, but it is platform-dependent in general. Source Edit

    ByteAddress {....deprecated: "use `uint`".} = int

  Deprecated: use `uint`
  is the signed integer type that should be used for converting pointers to integer addresses for readability. Source Edit

    cchar {.importc: "char", nodecl.} = char

  This is the same as the type `char` in C. Source Edit

    cdouble {.importc: "double", nodecl.} = float64

  This is the same as the type `double` in C. Source Edit

    cfloat {.importc: "float", nodecl.} = float32

  This is the same as the type `float` in C. Source Edit

    cint {.importc: "int", nodecl.} = int32

  This is the same as the type `int` in C. Source Edit

    clong {.importc: "long", nodecl.} = int

  This is the same as the type `long` in C. Source Edit

    clongdouble {.importc: "long double", nodecl.} = BiggestFloat

  This is the same as the type `long double` in C. This C type is not supported by Nim's code generator. Source Edit

    clonglong {.importc: "long long", nodecl.} = int64

  This is the same as the type `long long` in C. Source Edit

    cschar {.importc: "signed char", nodecl.} = int8

  This is the same as the type `signed char` in C. Source Edit

    cshort {.importc: "short", nodecl.} = int16

  This is the same as the type `short` in C. Source Edit

    csize_t {.importc: "size_t", nodecl.} = uint

  This is the same as the type `size_t` in C. Source Edit

    cstringArray {.importc: "char**", nodecl.} = ptr UncheckedArray[cstring]

  This is binary compatible to the type `char**` in C. The array's high value is large enough to disable bounds checking in practice. Use cstringArrayToSeq proc to convert it into a `seq[string]`. Source Edit

    cuchar {.importc: "unsigned char", nodecl,
             ...deprecated: "use `char` or `uint8` instead".} = char

  Deprecated: use `char` or `uint8` instead
  Deprecated: Use `uint8` instead. Source Edit

    cuint {.importc: "unsigned int", nodecl.} = uint32

  This is the same as the type `unsigned int` in C. Source Edit

    culong {.importc: "unsigned long", nodecl.} = uint

  This is the same as the type `unsigned long` in C. Source Edit

    culonglong {.importc: "unsigned long long", nodecl.} = uint64

  This is the same as the type `unsigned long long` in C. Source Edit

    cushort {.importc: "unsigned short", nodecl.} = uint16

  This is the same as the type `unsigned short` in C. Source Edit