main function and program execution
Every C program has a primary function that must be named
main function serves as the starting point for program execution. It usually controls program execution by directing the calls to other functions in the program.
Several restrictions apply to the
main function that don't apply to any other C functions. The
- Can't be declared as
- Can't be declared as
- Can't have its address taken.
- Can't be called from your program.
main function signature
main function doesn't have a declaration, because it's built into the language. If it did, the declaration syntax for
main would look like this:
int main( void );
int main( int argc, char *argv[ ] );
int main( int argc, char *argv[ ], char *envp[ ] );
main function is declared implicitly by using one of these signatures. You may use any of these signatures when you define your
main function. The Microsoft compiler also allows
main to have a return type of
void when no value is returned. The
envp parameters to
wmain can also be defined as type
char**. For more information about the arguments, see Argument description.
Functions within the source program perform one or more specific tasks. The
main function can call these functions to perform their respective tasks. When
main calls another function, it passes execution control to the function, so that execution begins at the first statement in the function. A function returns control to
main when a
return statement is executed or when the end of the function is reached.
You can declare any function, including
main, to have parameters. The term "parameter" or "formal parameter" refers to the identifier that receives a value passed to a function. See Parameters for information on passing arguments to parameters. When one function calls another, the called function receives values for its parameters from the calling function. These values are called arguments. You can declare formal parameters to
main so that it can receive arguments from the command line using the format shown in the function signature.
When you want to pass information to the
main function, the parameters are traditionally named
argv, although the C compiler doesn't require these names. Traditionally, if a third parameter is passed to
main, that parameter is named
envp. The types for
envp are defined by the C language. You can also declare
char** argv and
char** envp. Examples later in this section show how to use these three parameters to access command-line arguments. The following sections explain these parameters.
If your code adheres to the Unicode programming model, you can use the Microsoft-specific wide-character version of
wmain, as your program's entry point. For more information about this wide-character version of
main, see Using
A program usually stops executing when it returns from or reaches the end of
main, although it can terminate at other points in the program for various reasons. For example, you may want to force the termination of your program when some error condition is detected. To do so, you can use the
exit function. For more information on
exit and an example of usage, see