Funkce main představuje tzv. vstupní bod programu - funkce, která se při spuštění programu vykonává jako první. Ukončením funkce main se ukončí i celá aplikace. Pokud není funkce main ve fázi linkování aplikace přítomna (viz ccpp:kompilace), skončí tento proces s chybou a spustitelná aplikace nebude vytvořena.
int main() { return 0; // indikujeme EXIT_SUCCESS pro OS }
Pokud chceme aby byla aplikace plně korektní měla by funkce main končit voláním příkazu return s parametrem 0 v případě bezchybného konce aplikace, a nebo nenulovou hodnotou v případě chyby. Vrácené číslo je pak předáno operačnímu systému, který ho interpretuje jako chybu a lze s ním dále pracovat (výhodné pro skripty). Pokud příkaz return v moderních implementacích vynecháme, je automaticky předána hodnota 0.
Poznámka: Volání příkazu return okamžitě ukončí celou funkci a v případě funkce main i celou aplikaci.
int main(int argc, char* argv[]) { int x; printf("Zadejte odpoved na zakladni otazku zivota, vesmiru a vubec\n"); scanf("%d", &x); if (x != 42) return 1; // chybove ukonceni aplikace return 0; }
Každé aplikaci lze při jejím spuštěním zadat argumenty. Tyto argumenty jsou pak předány do speciálních parametrů funkce main jako vektor (seznam) řetězců. Parametr argc představuje počet argumentů, parametr argv[] je pole řetězců obsahující samotné argumenty. Každá aplikace dostane při spuštění automaticky alespoň jeden argument - její název.
$ ./mojeAplikace argument1 argument2
int main(int argc, char* argv[]) { for (int i = 0; i < argc; ++i) { printf("argv[%d]: %s\n", i, argv[i]); } return 0; }
Funkce main běží v hlavním vlákně aplikace. Pokud dojde k ukončení funkce main, jsou ukončena i všecha ostatní vlákna. Jestliže chceme počkat na dokončení ostatních vláken, je třeba na každé z nich počkat využítím funkce thread::join (C++11; cpp reference), nebo pthread_join (POSIX; man stránka).