Minden C program kötelezõen tartalmaz egy main nevû függvényt. Definiálásának helye lényegtelen, akármelyik forrásfile tartalmazhatja tetszõleges elhelyezésben, a vezérlést a program indulásakor - a megfelelõ inicializáló rendszerrutin (startup kód ) lefutása után - mindenképp a main kapja meg.
A main visszatérési típusát kétféleképpen is meg lehet adni: int-nek és void-nak deklarálva. (Ne feledjük, ha nem adunk meg típust a definicióban, a fordító automatikusan int-et tételez fel.) A visszaadott érték, ha van, a program ún. státuszkódja lesz. Ezt a program futása után megvizsgálhatjuk a DOS-ban az ERRORLEVEL batch funkcióval.
Amennyiben programunkat nem a COMMAND.COM indította el, hanem egy másik felhasználói program hívta (lásd a spawn és exec függvénycsaládot a process.h include file-ban), akkor az megkapja a visszaadott státuszkódot, és felhasználhatja annak eldöntésére, hogy programunk sikeresen futott-e le, vagy sem. Megállapodás szerint a 0 státuszkód sikeres végrehajtást jelent, az ettõl eltérõ értékekkel pedig a hiba jellegét is lehet közölni (például fatális hiba, file-kezelési hiba, CTRL BREAK, stb.). Minden komolyabb programnak illik visszaadni státuszkódot - erre legtöbbször az exit függvényt használjuk (melyet szintén a process.h file-ban definiáltak). Ennek elõnye, hogy a hibát észlelõ bármely rutinból meghívható az exit, nem szükséges a vezérlést - a hibainformáció cipelésével - visszajuttatni a main-hez, bár sokszor elég nehéz megtalálni egy eldugott exit hívást.
A main meghívásakor 3 paramétert kap, de ezek közül csak annyit kell átvennie, amennyire ténylegesen szüksége van. Elhagyni azonban csak hátulról elõre haladva lehet a paraméterlistáról. A main komplett deklarációja:
int main(int argc, char *argv[ ], char *env[ ]);Az argc paraméter megadja a parancssorban átadott argumentumok számát. Az argv[ ] az egyes paramétereket tartalmazó sztringekre mutató pointerek tömbje, az env[ ] pedig az ún. környezeti változókat (environment variables) és értéküket tartalmazó sztringek mutatótömbje. Ha programunk neve PROG, akkor a
SET KV=ALMA PROG alfa beta GAMMADOS parancssorok hatására a PROG-ban lévõ main paraméterei így alakulnak: