> In the case of an error in the main function, the process will exit with 1, otherwise 0. The main function can also return a value directly (return type u8 / !u8).
We know that by convention, but how do we know that from
pub fn main() !void {
If if write pub fn foo() !void {
will that function also get to return a u8?Also, what happened to argv/argc?
Re:Zig is everything I want C to be
by jiripospisil on Tuesday October 22, 2024 @05:37PM
(#41918990)
> will that function also get to return a u8?
No, the main function (the entry point of the entire program) is special cased. Have a look at the source code. There you can see it's calling the user defined main function and handling its return value / error.
https://github.com/ziglang/zig/blob/2d888a8e639856e8cb6e4c6f...
> Also, what happened to argv/argc?
You can access argv with std.os.argv which is a slice of null terminated strings. It's better to go with std.process.argsAlloc though (requires an allocation but works on all supported platforms).
`!void` means the function can return an error (e.g. return error.BadArgument) but doesn't produce any value itself. In the case of an error in the main function, the process will exit with 1, otherwise 0. The main function can also return a value directly (return type u8 / !u8).