{"id":"language--extern-c","name":"C ABI interop","owner":"yeho","package":"language","kind":"language","signature":"extern c Name(Type parameter) -> ReturnType\nextern c stdcall Name(...)","description":"extern c declares an external function with cdecl by default and optional stdcall or sysv conventions.","context":"Use C interop at a narrow adapter boundary after confirming the exact target ABI and admitted scalar types.","parameters":[],"returns":"","members":[],"tags":["c","cdecl","complete-program","cpu","extern","language","packages","stdcall","sysv","yeho"],"updated":"2026-09-09","source":{"repository":"yeho","path":"parser_declarations.cpp parseExternFunction; conformance extern-c-beyond-admitted-scalars"},"status":"experimental","notes":["The bootstrap compiler supports only extern c.","Interop beyond admitted scalars is experimental and must match the target ABI exactly."],"examples":[{"id":"complete","title":"Extern abi manifest","description":"Use C interop at a narrow adapter boundary after confirming the exact target ABI and admitted scalar types.","code":"extern c NativeScore(int value) returns int\nextern c stdcall NativeFlag(bool enabled) returns bool\n\nConsole.Log(\"extern-abi-manifest-ok\")\n\n\n","manifest":"package = \"tests.compiler.kyber.externAbiManifest\"\nversion = \"0.1.0\"\nbackend = \"kyber\"\nosTarget = \"windows\"\narchTarget = \"x64\"\nselfContainedApp = false\ncapabilities = [\"native\"]\nacknowledgedAdvisories = [\"extern.c\"]\n\n\n\n","tags":["cpu","complete-program"],"verification":"type checked","run":"cpu-oracle","source":"tests/compiler/kyber/extern-abi-manifest/start.yh","sha256":"7491a724a2354f433104f8e79c07bf10d5324f842b068d6eb71497cde7456ba5","checked":"2026-09-09","diagnostic":"","observedOutput":null,"checkedBackend":null}],"searchTerms":[],"url":"https://demonhunterlabs.com/academy/api?item=language--extern-c","json":"https://demonhunterlabs.com/reference/items/language--extern-c.json","markdown":"https://demonhunterlabs.com/reference/text/language--extern-c.md"}
