ccpp:main

Funkce main

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).

  • ccpp/main.txt
  • Poslední úprava: 2019/09/29 13:09
  • autor: bures