Zig 0.17.0-dev (Split by item)
This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig library itself.
Zig › std/ › start.zig › main
main
start.main
fn main (c_argc : c_int , c_argv : [*][*:0 ]c_char , c_envp : [*:null ]?[*:0 ]c_char ) callconv (.c ) c_int
File
Code
fn main (c_argc : c_int , c_argv : [*][*:0 ]c_char , c_envp : [*:null ]?[*:0 ]c_char ) callconv (.c ) c_int {
var env_count : usize = 0 ;
while (c_envp [env_count ] != null ) : (env_count += 1 ) {}
const envp = c_envp [0 ..env_count :null ];
switch (builtin .os .tag ) {
.linux => {
const at_phdr = std .c .getauxval (elf .AT_PHDR );
const at_phnum = std .c .getauxval (elf .AT_PHNUM );
const phdrs = (@as ([*]elf .Phdr , @ptrFromInt (at_phdr )))[0 ..at_phnum ];
expandStackSize (phdrs );
},
.windows => {
// values in their intended encoding from the PEB instead.
std .Thread .maybeAttachSignalStack ();
std .debug .maybeEnableSegfaultHandler ();
return callMain (std .os .windows .peb ().ProcessParameters .CommandLine .slice (), .global );
},
else => {},
}
return callMainWithArgs (@as (usize , @intCast (c_argc )), @as ([*][*:0 ]u8 , @ptrCast (c_argv )), @ptrCast (envp ));
}