Téma: Best practices
Mám několik dotazů k obecným zásadám psaní programu:
a) Jak přesně dochází k alokaci promněnných (oddíl variables, zásobník, halda)? Kde jsou umístěné globální proměnné, definované mimo tělo funkce (včetně main) a kde dočasné proměnné, definované uvnitř funkcí? Předpokládám z dřívějších diskuzí, že parametry volání funkcí jsou na zásobníku.
b) Mohu být textové sdílené proměnné alokovány na haldě? Předpokládám, že ne, protože z principu u nich musí být známá pevná délka. Takže např. T00[20] je jediná správná definice.
c) Dá se nějak při novém startu programu po jeho ukončení chybou ve zdrojovém kódu zjistit, ve kterém řádku k chybě došlo? Taková chyba se může objevit náhodou po průchodu téměř nepoužívanou větví, reset watchdogu sice program znovu spustí, ale přijdu o informaci o chybě z ladicího výpisu na konzolu.
d) Ve FULL-C je informace o důvodu resetu systému umístěna v systémové proměnné 40 (SoCresetReason). Ta mi vrací např. 0x1460000, ale podle příkladu na Wiki, by to měly být spodní bity. Mám si to posunout >> 16?
e) Je načítání programu nějak optimalizováno (přeskakování řádků, kde není splněna podmínka) nebo je lepší dlouhé úseky ve smyčce nahradit raději voláním funkcí - zrychlí se tím zpracování smyčky?