Warning: Declaration of action_plugin_subjectindex_indexer::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php on line 15

Warning: Declaration of action_plugin_mathjax_enable::register(Doku_Event_Handler &$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/mathjax/action/enable.php on line 62

Warning: Declaration of action_plugin_googleanalytics::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/googleanalytics/action.php on line 40

Warning: Declaration of action_plugin_folded::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/folded/action.php on line 40

Warning: Declaration of action_plugin_hidden::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/hidden/action.php on line 28

Warning: Declaration of action_plugin_include::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/include/action.php on line 354

Warning: Declaration of action_plugin_tag::register(&$contr) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/tag/action.php on line 175

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php:15) in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/auth.php on line 532

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/auth.php on line 818

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php:15) in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/actions.php on line 656

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php:15) in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/actions.php on line 656
jazykc:celkova-koncepce-programu

====== 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