// نداء دالة من مكتبة C عبر `خارجي`؛ النداء يحتاج `غير_آمن`.
// للبناء مع ربط مكتبة C: sultanc extern_call.sn -l c
// أو للتفسير: يجد sultanc interpret extern_call.sn الدالة labs وقت التشغيل
// (docs/en/internals/interpreter.md، «Dynamic C functions»).
استورد std.io.println;
استورد std.text.number;
خارجي عرف labs(القيمة: ص64): ص64;
عرف الرئيسية(): عدد {
دع البعد: متغير ص64 = 0;
غير_آمن {
البعد := labs(-1234);
}
اطبع_سطر(عدد_إلى_نص(البعد مثل عدد));
أرجع 0;
}// Calling a C library function through `extern`; the call needs `unsafe`.
// Build with the C library linked: sultanc extern_call.sn -l c
// Or interpret it: sultanc interpret extern_call.sn finds labs at run time
// (docs/en/internals/interpreter.md, "Dynamic C functions").
import std.io.println;
import std.text.number;
extern def labs(value: i64): i64;
def main(): int {
let distance: mutable i64 = 0;
unsafe {
distance := labs(-1234);
}
println(int_to_text(distance as int));
return 0;
}
التشغيل
بالمفسر، دون ترجمة:
./build/sultanc run examples/ar/ffi/extern_call.snأو ترجمه إلى ملف تنفيذي:
./build/sultanc examples/ar/ffi/extern_call.sn -o build/example && ./build/example