====== Celková koncepce programu ====== * [[dox>celkova-koncepce-programu/objemy-a-povrchy.c|Objemy_a_povrchy]] * [[dox>celkova-koncepce-programu/ascii-art.c|ASCII_Art]] ======Parametry a návratová hodnota funkce main====== Funkce main může mít žádný nebo dva formální parametry. Tyto [[argc-argv|parametry]] jsou většinou označovány argc (parametr typu int) a argv (typu pole textových řetězců). Definice hlavní funkce má tedy obvykle tvar <code c> int main(int argc, char* argv[]){ ... return EXIT_SUCCESS;//==0 } </code> <code c> int main(void) { return EXIT_FAILURE;// !=0 } </code> Podobně jako jiné funkce má i **main** svou návratovou hodnotu (typu int), kterou může [[die.net>3/exit|zpracovávat program]] (většinou OS), který náš program spustil (a tím jakoby volal naši hlavní funkci). ======Předání parametrů funkci main====== Parametry je možné hlavní funkci předat při spuštění programu z příkazové řádky (terminálu apod.) tím, že je napíšeme za název spustitelného souboru oddělené mezerami. Do parametru argc se uloží počet textových řetězců a do pole argv pak jednotlivé textové řetězce. Zde je nutné si uvedomit, že argv[0] je textový řetězec odpovídající spouštěnému programu (např. "xpm2eps.exe"), vlastní parametry tedy následují až na dalších indexech v poli. * hodnota //argc// odpovídá počtů textových řetězců v poli //argv//. * argv[argc] obsahuje NULL Příklad: <code c> ./xpm2eps -f *.xpm -o *.eps -by 10 (GNU/Linux) xpm2eps.exe -f *.xpm -o *.eps -by 10 (MS Windows) </code> Pro konverzi textových řetězců na čísla lze použít funkce [[die.net>3/atoi]] a [[die.net>3/atof]] definované v knihovně [[:c:stdlib.h]]. Příklad: <code c> int pocet; double cislo; ... pocet = atoi(argv[1]); cislo = atof(argv[2]); </code> ======Praxe====== h0nza: pro mne celková koncepce představuje toto: * rozdělení programu na moduly * monolitický program nebo knihovna/y + main modul/y * privatní a public .h soubory ---- cc, upol