skip to Main Content

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.

lub

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:

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.

Paweł Sołtysiak

Programista, domowy kucharz i "amator amerykańskiej polityki".
Zbieram informacje z całej sieci, po odrzuceniu chwastów i dodaniu swojej opinii publikuje na blogu.

  • Z tego, co pamiętam argc nigdy nie jest równe 0 – do programu zawsze przekazywana jest jego nazwa jako pierwszy parametr, także argc może być równe co najmniej jeden, a tablica argv zawsze zawiera co najmniej jeden element. Jeśli coś się zmieniło, to mnie popraw, ale ostatni program w C pisałem nie dalej jak rok temu, więc nie sądzę.

  • @Tomasz
    Nigdy nie można powiedzieć, że argc nie jest równe 0. Może być równe zero, gdy system operacyjne nie obsługuje podawania do aplikacji nazywy programów lub parametrów.

Back To Top