An implementation shall not predefine the
main function
. This
function shall not be overloaded
. Its type shall have C++ language linkage
and it shall have a declared return type of type
int, but otherwise its type is
implementation-defined
. An implementation shall allow both
- a function of () returning int and
- a function of (int, pointer to pointer to char) returning int
as the type of
main (
[dcl.fct])
. In the latter form, for purposes of exposition, the first function
parameter is called
argc and the second function parameter is
called
argv, where
argc shall be the number of
arguments passed to the program from the environment in which the
program is run
. If
argc is nonzero these arguments shall be supplied in
argv[0] through
argv[argc-1] as pointers to the initial
characters of null-terminated multibyte strings (
ntmbss) (
[multibyte.strings])
and
argv[0] shall be the pointer to
the initial character of a
ntmbs that represents the name used to
invoke the program or
"". The value of
argc shall be
non-negative
. The value of
argv[argc] shall be 0
. [
Note 2:
It
is recommended that any further (optional) parameters be added after
argv. —
end note]