Added basic Zig and C interoperability example
| Author | Mitja Felicijan <mitja.felicijan@gmail.com> | 2024-09-14 22:28:47 +0200 |
| Committer | Mitja Felicijan <mitja.felicijan@gmail.com> | 2024-09-14 22:28:47 +0200 |
| Commit | 8437bd12a54c6fe62c92b9a27fef03a5ec2a35cf (patch) |
|
-rw-r--r-- |
shell.nix | 2 | |
-rw-r--r-- |
zig-c-interop/Makefile | 2 | |
-rw-r--r-- |
zig-c-interop/billy.c | 3 | |
-rw-r--r-- |
zig-c-interop/billy.h | 1 | |
-rw-r--r-- |
zig-c-interop/main.zig | 9 |
5 files changed, 17 insertions, 0 deletions
| diff --git a/shell.nix b/shell.nix | |||
| ... | |||
| 5 | gnumake |
5 | gnumake |
| 6 | nasm |
6 | nasm |
| 7 | tinycc |
7 | tinycc |
| 8 | zig |
||
| 9 | zls |
||
| 8 | ]; |
10 | ]; |
| 9 | } |
11 | } |
| diff --git a/zig-c-interop/Makefile b/zig-c-interop/Makefile | |||
| 1 | default: |
||
| 2 | zig run -I. main.zig |
||
| diff --git a/zig-c-interop/billy.c b/zig-c-interop/billy.c | |||
| 1 | #include "billy.h" |
||
| 2 | |||
| 3 | int sum(int a, int b) { return a + b; }; |
||
| diff --git a/zig-c-interop/billy.h b/zig-c-interop/billy.h | |||
| 1 | int sum(int a, int b); |
||
| diff --git a/zig-c-interop/main.zig b/zig-c-interop/main.zig | |||
| 1 | const print = @import("std").debug.print; |
||
| 2 | |||
| 3 | const billy = @cImport({ |
||
| 4 | @cInclude("billy.c"); |
||
| 5 | }); |
||
| 6 | |||
| 7 | pub fn main() void { |
||
| 8 | print("Billy says 2+4={d}\n", .{billy.sum(2, 4)}); |
||
| 9 | } |
||