Skip to main content

C Interoperability

Importing C Libraries

import "math_library.c"
import "string_operations.c"

Calling C Functions

int result = c_function(arg1, arg2)

Type Mapping

CpyteC
intint
int64long long
uint64unsigned long long
floatdouble
strchar*
int*int*
void*void*

Example

import "test_import.c"

def main():
int x = my_add(3, 4)
print(x)
x = my_double(10)
print(x)

Importing Cpy Files

import "math_utils.cpy"
import "data_structs.cpy"

Only public functions are exported.

# math_utils.cpy
public def add(a: int, b: int) -> int:
return a + b

private def helper():
pass
# main.cpy
import "math_utils.cpy"

def main():
int result = add(3, 4)
print(result)