Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #108115

main()

Newsgroups comp.lang.c
From bartc <bc@freeuk.com>
Subject main()
Message-ID <ecUHA.285656$15.165152@fx07.am4> (permalink)
Organization virginmedia.com
Date 2017-04-14 00:53 +0100

Show all headers | View raw


I think this is not strictly part of the language but someone here may 
happen to know how it's done.

The arguments to a programs entry point such as main(int n, char** args) 
are not set up by the OS, but by some function the C implementation 
arranges.

On Windows at least, where such a function might use GetCommandLine() or 
__getmainargs() to obtain the command-line arguments and pass them to 
main().

What's the equivalent on Linux? Or will those args just magically be on 
the stack anyway? (Because after all Linux and C are very.. close.)

(I played around with code like this which possibly suggests the latter, 
but I need something definite. It seemed to work though!

[32-bit ARM]

#include <stdio.h>

int main(void) {
int i;
int n;
int *p=&i;
char** s;

for (i=0;i<10;++i) printf("%d: %d\n",i,*(p+i));

n=*(p+5);
s=(char**)*(p+4);

printf("N=%d\n",n);
for (i=0;i<n;++i) printf("%d: %s\n",i,s[i]);

}

)


-- 
bartc

Back to comp.lang.c | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

main() bartc <bc@freeuk.com> - 2017-04-14 00:53 +0100
  Re: main() Robert Wessel <robertwessel2@yahoo.com> - 2017-04-13 19:10 -0500
  Re: main() antispam@math.uni.wroc.pl - 2017-04-14 02:51 +0000
  Re: main() scott@slp53.sl.home (Scott Lurndal) - 2017-04-14 12:58 +0000
    Re: main() bartc <bc@freeuk.com> - 2017-04-14 14:11 +0100
      Re: main() Malcolm McLean <malcolm.mclean5@btinternet.com> - 2017-04-15 07:53 -0700
        Re: main() supercat@casperkitty.com - 2017-04-15 08:43 -0700
        Re: main() Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-04-15 16:50 +0100
        Re: main() Keith Thompson <kst-u@mib.org> - 2017-04-15 15:31 -0700
        Re: main() gordonb.y2etp@burditt.org (Gordon Burditt) - 2017-04-16 00:19 -0500
    The exec*() family (Was: main()) gazelle@shell.xmission.com (Kenny McCormack) - 2017-04-15 17:01 +0000
  Re: main() Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2017-04-14 10:04 -0400
    Re: main() bartc <bc@freeuk.com> - 2017-04-14 15:52 +0100
      Re: main() scott@slp53.sl.home (Scott Lurndal) - 2017-04-14 15:00 +0000
      Re: main() Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2017-04-14 13:49 -0400

csiph-web