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)