ATNEL tech-forum
https://forum.atnel.pl/

Funkcja ze wskaznikiem
https://forum.atnel.pl/topic20860.html
Strona 1 z 1

Autor:  TomekTomek55 [ 10 cze 2018, o 22:45 ]
Tytuł:  Funkcja ze wskaznikiem

Witam mam następujący problem z funkcja która ma kopiować rożne struktury z pamięci Flash do Ram.Rożne w sesie ze chciałem aby ta funkcja była uniwersalna i umożliwiała kopiowanie
struktur o rożnej długości. Dlatego tez pierwszy wskaźnik w funkcji kopiującej zdefiniowałem jako void ale to nie działa jesli zdefiniuje go jako wskAE tak jak w strukturze to jest
ok i działa.Ale tak jak wspomniałem jak będę miał strukturę innej długości np NOWA to już murze mieć pierwszy wskaźnik typu otwartego aby jedna funkcja skopiować te struktury.

Morze mi ktoś podpowiedzieć co robię źle?

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Autor:  andrews [ 11 cze 2018, o 06:13 ]
Tytuł:  Re: Funkcja ze wskaznikiem

TomekTomek55 napisał(a):
void Kopiuj(void *ram, const wskAE *pgm, wskAE *eeprom){
        memcpy_P (ram, pgm, sizeof(*ram));
}

Wskaźnik ram jest typu void, więc za pomocą sizeof(*ram) w rzeczywistości próbujesz pobrać rozmiar typu void, który jest nieokreślony.

Musisz przekazać rozmiar kopiowanego obszaru do funkcji jako jej argument.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Teraz sizeof() zadziała prawidłowo, bo podajesz jako argument zmienną o określonym typie, której rozmiar jest znany.

Oczywiście zakładam, że kopiujesz ze struktury we FLASH do struktury tego samego typu w RAM.

Autor:  TomekTomek55 [ 11 cze 2018, o 22:18 ]
Tytuł:  Re: Funkcja ze wskaznikiem

Tak masz rację dobrze to wyjaśniłeś tego mi brakowało.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/