summaryrefslogtreecommitdiff
path: root/exercises/093_hello_c.zig
diff options
context:
space:
mode:
authorChris Boesch <chrboesch@noreply.codeberg.org>2026-04-03 13:35:56 +0200
committerChris Boesch <chrboesch@noreply.codeberg.org>2026-04-03 13:35:56 +0200
commite0259f43a726f61da14686de802021fcdb9aacd0 (patch)
tree57359102e5e898289b91ada2d65ca742ec118c8b /exercises/093_hello_c.zig
parentffde357f303e7459a12cfe4b785ae9e8ef9ebe30 (diff)
Insert space for additional async exercises
Diffstat (limited to 'exercises/093_hello_c.zig')
-rw-r--r--exercises/093_hello_c.zig68
1 files changed, 0 insertions, 68 deletions
diff --git a/exercises/093_hello_c.zig b/exercises/093_hello_c.zig
deleted file mode 100644
index 182e0b0..0000000
--- a/exercises/093_hello_c.zig
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// When Andrew Kelley announced the idea of a new programming language
-// - namely Zig - in his blog on February 8, 2016, he also immediately
-// stated his ambitious goal: to replace the C language!
-//
-// In order to be able to achieve this goal at all, Zig should be
-// as compatible as possible with its "predecessor".
-// Only if it is possible to exchange individual modules in existing
-// C programs without having to use complicated wrappers,
-// the undertaking has a chance of success.
-//
-// So it is not surprising that calling C functions and vice versa
-// is extremely "smooth".
-//
-// To call C functions in Zig, you only need to specify the library
-// that contains said function. For this purpose there is a built-in
-// function corresponding to the well-known @import():
-//
-// @cImport()
-//
-// All required libraries can now be included in the usual Zig notation:
-//
-// const c = @cImport({
-// @cInclude("stdio.h");
-// @cInclude("...");
-// });
-//
-// Now a function can be called via the (in this example) constant 'c':
-//
-// c.puts("Hello world!");
-//
-// By the way, most C functions have return values in the form of an
-// integer value. Errors can then be evaluated (return < 0) or other
-// information can be obtained. For example, 'puts' returns the number
-// of characters output.
-//
-// So that all this does not remain a dry theory now, let's just start
-// and call a C function out of Zig.
-
-// our well-known "import" for Zig
-const std = @import("std");
-
-// and here the new import for C
-const c = @cImport({
- @cInclude("unistd.h");
-});
-
-pub fn main() void {
-
- // In order to output text that can be evaluated by the
- // Zig Builder, we need to write it to the Error output.
- // In Zig, we do this with "std.debug.print" and in C we can
- // specify a file descriptor i.e. 2 for error console.
- //
- // In this exercise we use 'write' to output 17 chars,
- // but something is still missing...
- const c_res = write(2, "Hello C from Zig!", 17);
-
- // let's see what the result from C is:
- std.debug.print(" - C result is {d} chars written.\n", .{c_res});
-}
-//
-// Something must be considered when compiling with C functions.
-// Namely that the Zig compiler knows that it should include
-// corresponding libraries. For this purpose we call the compiler
-// with the parameter "lc" for such a program,
-// e.g. "zig run -lc hello_c.zig".
-//