diff options
Diffstat (limited to 'exercises/093_hello_c.zig')
| -rw-r--r-- | exercises/093_hello_c.zig | 68 |
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". -// |
