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
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
====== 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
int main(int argc, char* argv[]){
...
return EXIT_SUCCESS;//==0
}
int main(void) {
return EXIT_FAILURE;// !=0
}
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:
./xpm2eps -f *.xpm -o *.eps -by 10 (GNU/Linux)
xpm2eps.exe -f *.xpm -o *.eps -by 10 (MS Windows)
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:
int pocet;
double cislo;
...
pocet = atoi(argv[1]);
cislo = atof(argv[2]);
======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