Mam taki (niezrozumiały dla mnie) przypadek:
- wewnątrz procedury main() definiuję zmienną strukturalną beż żadnych modyfikatorów typu volatile, czy static;
- programowo wypełniam jej pola wartościami;
- z main() wywołuję inną procedurę zewnętrzną, do której przekazuję adres tej struktury, np. func(&struktura) - func() jest przystosowana do otrzymywania w wywołaniu wskaźnika do struktur tego typu;
- jednak funkcja zewnętrzna func() otrzymuje jakiś bzdurny adres tej struktury, pod którym widzi same zera (adres około 4300(dec), czyli pod koniec wew. pamięci RAM uC).
Jeśli jednak zdefiniuję tę strukturę jako globalną, czyli na zewnątrz main(), lub wewnątrz main() jako static, to wskaźnik jest prawidłowy i wszystkto działa jak należy.
I tu nie rozumiem co robię źle...
Czy nie można robić wskaźnika na strukturę lokalną?
(jako IDE używam Eclipse, a kompilatorem jest WinAVR-20090313, piszę dla procka AT90CAN128)
- wewnątrz procedury main() definiuję zmienną strukturalną beż żadnych modyfikatorów typu volatile, czy static;
- programowo wypełniam jej pola wartościami;
- z main() wywołuję inną procedurę zewnętrzną, do której przekazuję adres tej struktury, np. func(&struktura) - func() jest przystosowana do otrzymywania w wywołaniu wskaźnika do struktur tego typu;
- jednak funkcja zewnętrzna func() otrzymuje jakiś bzdurny adres tej struktury, pod którym widzi same zera (adres około 4300(dec), czyli pod koniec wew. pamięci RAM uC).
Jeśli jednak zdefiniuję tę strukturę jako globalną, czyli na zewnątrz main(), lub wewnątrz main() jako static, to wskaźnik jest prawidłowy i wszystkto działa jak należy.
I tu nie rozumiem co robię źle...
Czy nie można robić wskaźnika na strukturę lokalną?
(jako IDE używam Eclipse, a kompilatorem jest WinAVR-20090313, piszę dla procka AT90CAN128)
