4 ms·
Nice. Is zig easily callable with the C ABI? This could be a really nice thing to have for everybody using a different language too
by sharikous 4y ago
Nice. Is zig easily callable with the C ABI? This could be a really nice thing to have for everybody using a different language too
- dosshell 4y agoZig and C are best friends. Zig can even compile C.
- norman784 4y agoIIRC there were some limitations with C macros, if that is a think, my understanding of C is very limited, but I was interested in zig a while ago and watched some presentations.
- cturtle 4y agoYes not everything can be imported perfectly. With my project making a Lua wrapper library in Zig I had to fix a few poorly translated macros. Overall though most translated just fine. I think with some work on Zig’s end a few more cases could be handled though.
- Zen1th 4y agoYea :) In fact I'm planning to add a C ABI to Capy (I already did some small tests in the c_exemples folder)
- LAC-Tech 4y agoIn Zig you literally just import a C header and start coding. There's no FFI like rust and no header guards like C++.
- Tozen 4y agoBy the way, Vlang has that level of C interop as well (https://github.com/vlang/v/blob/master/doc/docs.md https://github.com/vlang/v/blob/master/doc/docs.md), plus an outright C2V transpiler (https://github.com/vlang/c2v https://github.com/vlang/c2v) and can be compiled to human-readable C.
- mort96 4y agoThe question wasn't if you can call C from Zig code, but if you can call Zig from C code.
- brabel 4y agoYou can, but you must explicitly declare your function wants to use C calling convention. See https://ziglang.org/documentation/master/#toc-export https://ziglang.org/documentation/master/#toc-export for an example, looks like this: fn internalName() callconv(.C) void {} It will not compile if you use types that the C-calling convention does not allow. Without this, no, you can't call Zig from C.
- LAC-Tech 4y agoMy mistake