استدعاء C (FFI)
منقول من الكتاب المرجعي: docs/handbook/language/10-ffi.md · الإيداع 7a52f6c
القاعدة. خارجي "مكتبة" داله الاسم(المعامل نوع_C, ...) نوع_C باسم "اسم_C" في المستوى الأعلى يصرّح بدالة من مكتبة C؛
بلا مكتبة فهي من مكتبة C نفسها. الأنواع في التوقيع أنواع C (جدولها في المفردات). الرمز يُفحص قبل
التشغيل: مفقود خطأ ترجمة برمز 2. --no-ffi يمنع خارجي في برنامج المستخدم (لا في المكتبة القياسية). التفصيل في
stdlib-design.md (وثيقة في مستودع المجمّع) وlow-level.md (وثيقة في مستودع المجمّع).
نصيُمرَّر منتهياً بصفر؛ ونص ترجعه C يُنسخ (نص_مملوك: يُنسخ ثم يُحرَّر الأصل بـfree).نص_او_لاشيءيقبل NULL.- الأعداد بأحجامها: القيمة خارج مدى
عدد32خطأ تشغيل عند الاستدعاء. - منذ 0.7.0:
هيكل_سي(تخطيط C،حجم_النوعيطابقsizeof) ومؤشر[هيكل_سي]في التوقيع، ونص_سي(char *بلا نسخ، معنص_سي(ن[, م])ومن_نص_سي(خ))، ودالة ميم تُمرَّر باسمها إلى C (استدعاء عكسي).
خارجي "m" داله جذر(س كسر) كسر باسم "sqrt"خارجي داله طول_c(ن نص) حجم باسم "strlen"هيكل_سي رأس: نوع طبيعي8 طول عدد32اطبع(جذر(2.0), " ", طول_c("ميم"), " ", حجم_النوع(رأس))القيود المعروفة. لا دوال متغيرة عدد الوسائط (printf). القوائم والقواميس والهياكل العادية لا تُمرَّر. دالة ميم إلى
C تُمرَّر باسمها لا بمتغير. C التي تحتفظ بمؤشر نص بعد رجوعها مسؤولية كاتب التصريح.
أخطاء محتملة.
خارجي "m" داله غريبة(س كسر) كسر باسم "no_such_function_xyz"اطبع(غريبة(1.0))رمز الخروج: 2
في فهرس الأخطاء: E0416