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 standard library.
std › start › main Private Function main Doc Source Private Function std.start.main
fn main (c_argc : c_int , c_argv : [*][*:0 ]c_char , c_envp : [*:null ]?[*:0 ]c_char ) callconv (.c ) c_int Params c_argc : c_int c_argv : [*][*:0 ]c_char c_envp : [*:null ]?[*:0 ]c_char File start.zig: 732
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755 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 .ElfN .Phdr , @ptrFromInt (at_phdr )))[0 ..at_phnum ];
expandStackSize (phdrs );
},
.windows => {
// On Windows, we ignore libc environment and argv and get those
// 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 ));
}