Next: Advanced Function Features, Previous: Function Pointers, Up: Functions [Contents][Index]
main
FunctionEvery complete executable program requires at least one function,
called main
, which is where execution begins. You do not have
to explicitly declare main
, though GNU C permits you to do so.
Conventionally, main
should be defined to follow one of these
calling conventions:
int main (void) {…} int main (int argc, char *argv[]) {…} int main (int argc, char *argv[], char *envp[]) {…}
Using void
as the parameter list means that main
does
not use the arguments. You can write char **argv
instead of
char *argv[]
, and likewise for envp
, as the two
constructs are equivalent.
You can call main
from C code, as you can call any other
function, though that is an unusual thing to do. When you do that,
you must write the call to pass arguments that match the parameters in
the definition of main
.
The main
function is not actually the first code that runs when
a program starts. In fact, the first code that runs is system code
from the file crt0.o. In Unix, this was hand-written assembler
code, but in GNU we replaced it with C code. Its job is to find
the arguments for main
and call that.