Standard C99 – początek programu, funkcja main

Według standardu C99 (najnowszego standardu języka C, następcę standardu C89 lub pod inną nazwą ANSI C)

Kod jest zgodny z kompilatorem GCC w wersji  4.6.0. Kompilator Visual C nie posiada obsługi standardu C9

Funkcja main jest funkcją która rozpoczyna program. Jej definicja może wyglądać dwojako.

int main(void) { /* ... */ }

lub

int main(int argc, char *argv[]) { /* ... */ }

standard nie przewiduje co się ma stać gdy poda się tylko argc. W przypadku używanego przez mnie kompilatora GCC, zgłasza on ostrzeżenie:

warning: ‘main’ takes only zero or two arguments [-Wmain]

czyli main przyjmuje tylko zero lub dwa argumenty.
Zapisanie w takiej postaci:

int main(char *argv[]) { /* ... */ }

Spowoduje pojawienie się kolejnego ostrzeżenia:

warning: first argument of ‘main’ should be ‘int’ [-Wmain]

czyli że pierwszy argument funkcji main powinien być intem.

Dokument odnośnie standardu C99 mówi że liczba argc powinna być nie ujemna oraz, że wskaźnik argv[argc] powinien wskazywać na NULL’a.

Poniżej przedstawiam diagram zależności wielkości argc od od tego co się znajduje w argv.

UWAGA! jeżeli argc wynosi 1 wtedy nie ma dostępnych parametrów.