RosettaCodeData/Task/Call-a-foreign-language-function/Hare/call-a-foreign-language-function.hare

17 lines
317 B
Text
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
// hare run -lc ffi.ha
use fmt;
use strings;
@symbol("strdup") fn cstrdup(_: *const char) *char;
@symbol("free") fn cfree(_: nullable *void) void;
export fn main() void = {
let s = strings::to_c("Hello, World!");
defer free(s);
let dup = cstrdup(s);
fmt::printfln("{}", strings::fromc(dup))!;
cfree(dup);
};