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
}