Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 19 sie 2018, o 20:06


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 10 cze 2018, o 22:45 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 109
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 cze 2018, o 06:13 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 353
Pomógł: 84

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 postu otrzymał pochwałę

_________________
Miksowanie kodu C i ASM przy użyciu GCC



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 cze 2018, o 22:18 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 109
Pomógł: 0

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO